Как использовать фрагменты динамически, внутри другого фрагмента - PullRequest
0 голосов
/ 22 июня 2019

Я разрабатываю приложение в 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 (), потому что я прочитал, что необходимо, когда вы хотите использовать фрагменты в другом фрагменте.

Есть предложения?

С наилучшими пожеланиями

1 Ответ

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

Вы должны реализовать OnFragmentInteractionListener в CargaDataEnsayoActivity классе или удалить эту проверку в onAttach вашего фрагмента

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