Как правильно использовать Kotlin для вызова пустого фрагмента из фрагмента Home? - PullRequest
0 голосов
/ 15 октября 2018
class HomeFragment : Fragment() {

    override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?,
                              savedInstanceState: Bundle?): View? {
        // Inflate the layout for this fragment
        val v = inflater.inflate(R.layout.fragment_home, container, false)

        val fab = v.findViewById(R.id.fab) as FloatingActionButton
        fab.setOnClickListener {
            val blankFragment = BlankFragment()
            val manager = childFragmentManager
            manager.beginTransaction().replace(R.id.frame_container, blankFragment, blankFragment.tag).commit()

           // System.out.println("You have reached the floating action button")
        }
        return v
    }
}

Получение сообщения об отсутствии найденной ошибки.У меня могут быть проблемы с R.id.frame_content, но Kotlin не сразу идентифицирует все значения идентификатора ...

1 Ответ

0 голосов
/ 17 октября 2018

Это может быть не самый лучший способ, и я прошу прощения за ужасное форматирование, которое я делаю, пока отвечаю на своем телефоне, и трудно сделать его идеальным.В любом случае в активности, содержащей ваши фрагменты, например MainActivity.kt, добавьте ...

supportFragmentManager.beginTransaction.add(R.id.fragment_home, HomeFragment.newInstance, "HomeFragment").commit()

В вашем HomeFragment.kt измените следующее.

class HomeFragment: Fragment(){
companion object { 
fun newInstance(): HomeFragment{
return HomeFragment() }

fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View? {
val view: View = inflater!!.inflate(R.layout.fragment_home, container, false)
val activity = activity 
return view
}
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)
val clickListener = View.OnClickListener { view ->
when (view.getId()) {
 R.id.fab -> NextFragment()
 }
 }
 fab.setOnClickListener(clickListener)
 }
 NextFragment(){
 val fragManager = activity?.supportFragmentManager
 fragManager?.beginTransaction()?.replace(R.id.frame_container, BlankFragment.newInstance(), "blankFragment")?.commit()
}

Убедитесь, что вы сделалите же изменения в BlankFragment.kt

class BlankFragment: Fragment(){
companion object {
fun newInstance(): BlankFragment{
return BlankFragment() }
override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View? {
val view: View = inflater!!.inflate(R.layout.fragment_blank, container, false)
val activity = activity
return view
}
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)
//Do some stuff with your views in BlankFragment here
}
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...