Котлин: открыть новую активность внутри фрагмента - PullRequest
0 голосов
/ 18 ноября 2018

Как я могу открыть новое действие внутри фрагмента при использовании кнопки?

Я пробовал это

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 = Намерение, похоже, не работает во фрагменте,

Есть идеи, как я могу начать новое действие внутри фрагмента?

Я благодарен за каждый полученный ответ и благодарю вас за вашу помощь!

Ответы [ 7 ]

0 голосов

Также вариант (для котлина).В onCreateView установите onClickListener для кнопки:

button.setOnClickListener {
    requireActivity().run {
        startActivity(Intent(this, MainActivity::class.java))
        finish() // If activity no more needed in back stack
    }
}
0 голосов
/ 12 июля 2019

Поместите это

LogOut_btn.setOnClickListener {
        //FirebaseAuth.getInstance().signOut()
         val intent = Intent (this, Main::class.java)
        startActivity(intent)



    }

внутри метода onCreate в Activity, куда загружается фрагмент

0 голосов
/ 10 апреля 2019

В kotlin (fragment): напишите этот код в setOnClickListener методе вашего Button или View

btn.setOnClickListener {
        val intent = Intent(activity, MainActivity::class.java)
        activity?.startActivity(intent)
    }
0 голосов
/ 22 марта 2019

Если вы используете только activity, возвращается только экземпляр Activity. Это может быть любое действие, встраивающее ваш фрагмент, поэтому в некоторых случаях вы можете получить FragmentActivity вместо вашего родительского действия. Используйте это, чтобы использовать, вы получаете правильный:

(activity as YourParentActivity)?.let{
    val intent = Intent (it, Main::class.java)
    it.startActivity(intent)
}
0 голосов
/ 18 ноября 2018

Поскольку 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)
}
0 голосов
/ 18 ноября 2018

Ваш код почти готов, вам просто нужно передать экземпляр фрагмента в качестве первого параметра Intent, заменив YourFragmentName именем фрагмента после @, ниже:

val intent = Intent (this@YourFragmentName.context, Main::class.java)
startActivity(intent)

Посмотрите на этот образец ниже:

class MyFragment: Fragment(){

    override fun onActivityCreated(savedInstanceState: Bundle?) {
        super.onActivityCreated(savedInstanceState)

        val intent = Intent (this@MyFragment.context, YOUR_NEXT_ACTIVITY_CLASS::class.java)
        startActivity(intent)
    }
}
0 голосов
/ 18 ноября 2018

Я верю, что это будет что-то вроде

activity?.let { callingActivity -> startActivity(Intent(callingActivity, Main::class.java)) }

Вы должны использовать звонки context

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...