Ini file navigasi saya

<navigation
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:id="@+id/navigation"
    app:startDestination="@id/fragmentA">

    <fragment
        android:id="@+id/fragmentA"
        android:name="com.example.fragmentdatapassings.FragmentA"
        android:label="Fragment A">
        <action
            android:id="@+id/action_fragmentA_to_fragnentB"
            app:destination="@+id/fragmentB" />
        <argument
        android:name="x"
        app:argType="integer" />
    </fragment>

    <fragment
        android:id="@+id/fragmentB"
        android:name="com.example.fragmentdatapassings.FragmentB"
        android:label="FragmentB">
    </fragment>

</navigation>

Berikut adalah kode untuk melewatkan data arah fragmen.

val x : Int = 10
val action = FragmentADirections.actionFragmentAToFragnentB(x)
Navigation.findNavController(requireView()).navigate(action)

Baris ke-2 di atas menunjukkan kesalahan

Terlalu banyak argumen untuk kesenangan di tempat umum

Ketika saya mengarahkan mouse ke kesalahan, itu menunjukkan tambahkan parameter x, saya mengkliknya dan itu menambahkan parameter x di FragmentADirections. Tetapi setelah membangun aplikasi lagi itu menunjukkan kesalahan lagi.

0
Kaustubh.P.N 6 Juli 2020, 11:20

1 menjawab

Jawaban Terbaik

<argument> harus dalam fragmen yang ingin Anda terima bukan dari mana Anda mengirim

Jika Anda ingin meneruskan data dari fragmen A ke B

  <fragment
        android:id="@+id/fragmentB"
        android:name="com.example.fragmentdatapassings.FragmentB"
        android:label="FragmentB">
        <argument
        android:name="x"
        app:argType="integer" />
    </fragment>

Dan hapus argumen dari fragmen A dan itu akan baik-baik saja

1
user12019713user12019713 6 Juli 2020, 09:08