ボタンを使用するときにフラグメント内の新しいアクティビティを開くにはどうすればよいですか?
私はこれを試しました
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)
LogOut_btn.setOnClickListener {
//FirebaseAuth.getInstance().signOut()
val intent = Intent (this, Main::class.Java)
startActivity(intent)
}
}
val intent = Intentはフラグメントでは機能しないようです。
フラグメント内で新しいアクティビティを開始するにはどうすればよいですか?
私は私が得たすべての答えに感謝し、あなたの助けをありがとう!
Fragment
はContext
タイプではないため、親Activity
を呼び出す必要があります。
val intent = Intent (getActivity(), Main::class.Java)
getActivity().startActivity(intent)
または多分何か
activity?.let{
val intent = Intent (it, Main::class.Java)
it.startActivity(intent)
}
これ入れて
LogOut_btn.setOnClickListener {
//FirebaseAuth.getInstance().signOut()
val intent = Intent (this, Main::class.Java)
startActivity(intent)
}
フラグメントが読み込まれるアクティビティのonCreateメソッド内
代わりにフラグメントからコンテキストを取得してみてください
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)
LogOut_btn.setOnClickListener {
//FirebaseAuth.getInstance().signOut()
val intent = Intent (view.context, Main::class.Java)
startActivity(intent)
}
}
activity
のみを使用すると、Activityインスタンスのみが返されます。これはフラグメントを埋め込む任意のアクティビティにすることができるため、場合によっては親アクティビティの代わりにFragmentActivityを取得できます。これを使用して、正しいものを取得しています:
(activity as YourParentActivity?)?.let{
val intent = Intent (it, Main::class.Java)
it.startActivity(intent)
}
オプション(kotlin用)。 onCreateViewで、ボタンのonClickListenerを設定します。
button.setOnClickListener {
requireActivity().run {
startActivity(Intent(this, MainActivity::class.Java))
finish() // If activity no more needed in back stack
}
}
それは次のようなものになると思います
activity?.let { callingActivity -> startActivity(Intent(callingActivity, Main::class.Java)) }
呼び出しアクティビティcontext
を使用する必要があります
コードはほぼ完成しました。フラグメントインスタンスをIntentの最初のパラメータとして渡す必要がありますYourFragmentNameを@の後のフラグメント名に置き換えてください:
val intent = Intent ([email protected], Main::class.Java)
startActivity(intent)
次のサンプルサンプルをご覧ください。
class MyFragment: Fragment(){
override fun onActivityCreated(savedInstanceState: Bundle?) {
super.onActivityCreated(savedInstanceState)
val intent = Intent ([email protected], YOUR_NEXT_ACTIVITY_CLASS::class.Java)
startActivity(intent)
}
}