Я разрабатываю приложение в Android (SDK 27)
Я должен создать макет ввода данных, который должен быть динамическим.
Так что я думаю фрагментарно.
Сначала у меня уже есть 3 вкладки (общие, подробности, комментарии), и я хочу сделать переменную содержимого вкладки «подробно». У меня есть 3 макета для этой вкладки.
Я уже создал 2 фрагмента, но когда я запускаю программу, я получаю эту ошибку:
Process: ar.com.codigose.atmobile, PID: 13014
java.lang.RuntimeException: ar.com.codigose.atmobile.CargaDataEnsayoActivity@89c8433 must implement OnFragmentInteractionListener
at ar.com.codigose.atmobile.CobbFragment.onAttach(CobbFragment.java:86)
...
...
Вопрос заключается в следующем: нужно ли добавить: OnFragmentInteractionListener на основное действие (действие, которое управляет вкладками)?
Или есть другой способ?
Идея состоит в том, что я изменю программно (с помощью счетчика) фрагмент на вкладке "Подробности", поэтому я думаю, что мне не нужно добавлять этот слушатель ...
это макет, в котором я хочу программно изменить фрагмент:
fragment_repeticion_enfermedad_var.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
tools:context=".RepeticionEnfermedadVarFragment">
<!-- TODO: Update blank fragment layout -->
<TextView
android:id="@+id/tv_enfermedad"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="@string/hello_blank_fragment"
android:textSize="18sp"
android:textStyle="bold" />
<Spinner
android:id="@+id/spinner_enfermedad"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@android:drawable/spinner_dropdown_background" />
<FrameLayout
android:id="@+id/frag_enfermedad"
android:layout_width="match_parent"
android:layout_height="match_parent">
</FrameLayout>
</LinearLayout>
так я буду динамически менять фрагменты.
...
Fragment fragment = new CobbFragment(); // Luego seria variable
FragmentTransaction transaction = getChildFragmentManager().beginTransaction();
transaction.replace(R.id.frag_enfermedad, fragment).commit();
...
Я использую getChildFragmentManager (), потому что я прочитал, что необходимо, когда вы хотите использовать фрагменты в другом фрагменте.
Есть предложения?
С наилучшими пожеланиями