Как юзать ListFragment в андроид на котлин?

Создал пустой проект с EmptyActivity далее добавил фрагмент (New - Fragment - Fragment(List)) после добавляю в разметку MainActivity

<fragment
    android:name="ru.user.test.ItemFragment"
    android:layout_width="match_parent"
    android:layout_height="match_parent"/>

и выходит ошибка:

E/AndroidRuntime: FATAL EXCEPTION: main
    Process: ru.user.test, PID: 17257
    java.lang.RuntimeException: Unable to start activity ComponentInfo{ru.user.test/ru.user.test.MainActivity}: android.view.InflateException: Binary XML file line #18: Binary XML file line #18: Error inflating class fragment
        at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2665)
        at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2726)
        at android.app.ActivityThread.-wrap12(ActivityThread.java)
        at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1477)
        at android.os.Handler.dispatchMessage(Handler.java:102)
        at android.os.Looper.loop(Looper.java:154)
        at android.app.ActivityThread.main(ActivityThread.java:6119)
        at java.lang.reflect.Method.invoke(Native Method)
        at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:886)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:776)
     Caused by: android.view.InflateException: Binary XML file line #18: Binary XML file line #18: Error inflating class fragment
     Caused by: android.view.InflateException: Binary XML file line #18: Error inflating class fragment
     Caused by: java.lang.IllegalArgumentException: Binary XML file line #18: Must specify unique android:id, android:tag, or have a parent with an id for ru.user.test.ItemFragment
        at androidx.fragment.app.FragmentManagerImpl.onCreateView(FragmentManager.java:3717)
        at androidx.fragment.app.FragmentController.onCreateView(FragmentController.java:120)
        at androidx.fragment.app.FragmentActivity.dispatchFragmentsOnCreateView(FragmentActivity.java:405)
        at androidx.fragment.app.FragmentActivity.onCreateView(FragmentActivity.java:387)
        at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:777)
        at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:727)
        at android.view.LayoutInflater.rInflate(LayoutInflater.java:858)
        at android.view.LayoutInflater.rInflateChildren(LayoutInflater.java:821)
        at android.view.LayoutInflater.inflate(LayoutInflater.java:518)
        at android.view.LayoutInflater.inflate(LayoutInflater.java:426)
        at android.view.LayoutInflater.inflate(LayoutInflater.java:377)
        at androidx.appcompat.app.AppCompatDelegateImpl.setContentView(AppCompatDelegateImpl.java:469)
        at androidx.appcompat.app.AppCompatActivity.setContentView(AppCompatActivity.java:140)
        at ru.user.test.MainActivity.onCreate(MainActivity.kt:12)
        at android.app.Activity.performCreate(Activity.java:6679)
        at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1118)
        at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2618)
        at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2726)
        at android.app.ActivityThread.-wrap12(ActivityThread.java)
        at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1477)
        at android.os.Handler.dispatchMessage(Handler.java:102)
        at android.os.Looper.loop(Looper.java:154)
        at android.app.ActivityThread.main(ActivityThread.java:6119)
        at java.lang.reflect.Method.invoke(Native Method)
        at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:886)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:776)
Process 17257 terminated.

Ответы (1 шт):

Автор решения: Sergei Buvaka

Caused by: java.lang.IllegalArgumentException: Binary XML file line #18: Must specify unique android:id, android:tag, or have a parent with an id for ru.user.test.ItemFragment

Вот эта ошибка вам говорит, что ваш фрагмент должен иметь какой-то тег или id по которому система сможет определить его уникальность, чтоб в последствии иметь возможность его восстанавливать.

Из официальной документации:

Note: Each fragment requires a unique identifier that the system can use to restore the fragment if the activity is restarted (and which you can use to capture the fragment to perform transactions, such as remove it). There are three ways to provide an ID for a fragment:

Supply the android:id attribute with a unique ID.
Supply the android:tag attribute with a unique string.
If you provide neither of the previous two, the system uses the ID of the container view.

Также вы найдете здесь пример использования идентификатора для фрагмента:

<fragment android:name="ru.user.test.ItemFragment""
        android:id="@+id/item_fragment"
        android:layout_width="match_parent"
        android:layout_height="match_parent" />
→ Ссылка