Я не могу начать действие или фрагмент с основной деятельности через FAB - PullRequest
0 голосов
/ 24 июня 2019

У меня сгенерировано новое действие + фрагмент с именем "adddebtinfo"

enter image description here
и попробуйте запустить это действие, используя FAB в MainActivity, но оно не работает вообще.

MainActivity.kt

    var fab: FloatingActionButton = findViewById(R.id.fab)
    fab.setOnClickListener {
        val intent = Intent(this, AddDebtInfoFragment::class.java)
        startActivity(intent)

AddDebtInfoFragment.kt

private lateinit var viewModel: AddDebtInfoViewModel

override fun onCreateView(
    inflater: LayoutInflater, container: ViewGroup?,
    savedInstanceState: Bundle?
): View {
    var binding : AddDebtInfoActivityBinding = DataBindingUtil.inflate(inflater ,R.layout.add_debt_info_fragment,container , false)
    return binding.root
}

override fun onActivityCreated(savedInstanceState: Bundle?) {
    super.onActivityCreated(savedInstanceState)
    viewModel = ViewModelProviders.of(this).get(AddDebtInfoViewModel::class.java)
    // TODO: Use the ViewModel
}

}

add_debt_info_fragment.xml

<androidx.constraintlayout.widget.ConstraintLayout
        android:id="@+id/add_debt_info_fragment"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        tools:context=".ui.adddebtinfo.AddDebtInfoFragment">

add_debt_info_activity.xml

<FrameLayout
            android:id="@+id/container"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            tools:context=".AddDebtInfo"/>

Ответы [ 3 ]

0 голосов
/ 24 июня 2019

Для добавления / замены фрагмента вам необходимо выполнить FragmentTrascations по нажатию кнопки FAB.Для открытия нового действия вам нужно выполнить startActivity(someIntent) относительно действия / контекста FAB.

0 голосов
/ 24 июня 2019

Purusann, вы хотите использовать FragmentTransaction с контейнером FrameLayout, который у вас есть.

fab.setOnClickListener {
   // Create a new Fragment to be placed in the activity layout
        val firstFragment = AddDebtInfoFragment()

        // Add the fragment to the 'container' FrameLayout
        supportFragmentManager.beginTransaction()
                .add(R.id.container, firstFragment).commit()
}

Пожалуйста, прочитайте эту страницу документа Android, чтобы понять, как использовать фрагменты: https://developer.android.com/training/basics/fragments/fragment-ui

0 голосов
/ 24 июня 2019

Вы пытаетесь запустить фрагмент с помощью намерения. Вам следует заменить AddDebtInfoFragment на имя действия в следующей строке: val intent = Intent(this, AddDebtInfoFragment::class.java)

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