Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/191.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/maven/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何在不发送参数的情况下从一个片段导航到另一个片段_Java_Android_Navigation_Android Jetpack - Fatal编程技术网

Java 如何在不发送参数的情况下从一个片段导航到另一个片段

Java 如何在不发送参数的情况下从一个片段导航到另一个片段,java,android,navigation,android-jetpack,Java,Android,Navigation,Android Jetpack,我目前正在研究使用导航组件中的SafeArgs将参数从一个片段发送到另一个片段的方法。我已经在目的地片段中设置了参数,如几篇博客文章中所述,但我也希望能够在没有参数的情况下导航到该目的地。我不想传递一堆空值和0 编辑:这是my navigation.xml: <?xml version="1.0" encoding="utf-8"?> <navigation xmlns:android="http://schemas.android.com/apk/res/android"

我目前正在研究使用导航组件中的SafeArgs将参数从一个片段发送到另一个片段的方法。我已经在目的地片段中设置了参数,如几篇博客文章中所述,但我也希望能够在没有参数的情况下导航到该目的地。我不想传递一堆空值和0

编辑:这是my navigation.xml:

<?xml version="1.0" encoding="utf-8"?>
<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/nav_graph"
    android:label="@string/app_name"
    app:startDestination="@+id/homeFragment">

    <fragment
        android:id="@+id/homeFragment"
        android:name="com.andreramon.todo.destinations.HomeFragment"
        android:label=" "
        tools:layout="@layout/fragment_home">
        <action
            android:id="@+id/action_homeFragment_to_imprintFragment"
            app:destination="@id/imprintFragment" />
        <action
            android:id="@+id/action_homeFragment_to_settingsFragment"
            app:destination="@id/settingsFragment" />
        <action
            android:id="@+id/action_homeFragment_to_addEditTaskFragment"
            app:destination="@id/addEditTaskFragment"/>
    </fragment>
    <fragment
        android:id="@+id/addEditTaskFragment"

    android:name="com.andreramon.todo.destinations.AddEditTaskFragment"
        android:label="@string/toolbar_parent_tasks"
        tools:layout="@layout/fragment_add_edit_task">
        <argument
            android:name="id"
            app:argType="integer"/>
        <argument
            android:name="title"
            app:argType="string" />
        <argument
            android:name="priority"
            app:argType="integer" />
        <argument
            android:name="duedate"
            app:argType="string" />
        <argument
            android:name="remindme"
            app:argType="string" />
        <argument
            android:name="addanote"
            app:argType="string" />
    </fragment>
    <fragment
        android:id="@+id/imprintFragment"
        android:name="com.andreramon.todo.destinations.ImprintFragment"
        android:label="@string/drawer_imprint"
        tools:layout="@layout/fragment_imprint" />
    <fragment
        android:id="@+id/settingsFragment"
        android:name="com.andreramon.todo.destinations.SettingsFragment"
        android:label="@string/drawer_settings"
        tools:layout="@layout/fragment_settings" />
</navigation>
我使用以下命令在目标位置检索参数:

titleEditText.setText(AddEditTaskFragmentArgs.fromBundle(getArguments()).getTitle());
等等

现在,当尝试使用以下命令导航到AddEditTaskFragment时:

addTaskFab.setOnClickListener(Navigation.createNavigateOnClickListener(R.id.addEditTaskFragment));
我在logcat中得到这个错误:

    Process: com.andreramon.todo, PID: 10014
    java.lang.IllegalArgumentException: Required argument "id" is missing and does not have an android:defaultValue
        at com.andreramon.todo.destinations.AddEditTaskFragmentArgs.fromBundle(AddEditTaskFragmentArgs.java:33)
        at com.andreramon.todo.destinations.AddEditTaskFragment.onViewCreated(AddEditTaskFragment.java:71)
        at androidx.fragment.app.FragmentManagerImpl.moveToState(FragmentManagerImpl.java:895)
        at androidx.fragment.app.FragmentManagerImpl.addAddedFragments(FragmentManagerImpl.java:2092)
        at androidx.fragment.app.FragmentManagerImpl.executeOpsTogether(FragmentManagerImpl.java:1866)
        at androidx.fragment.app.FragmentManagerImpl.removeRedundantOperationsAndExecute(FragmentManagerImpl.java:1822)
        at androidx.fragment.app.FragmentManagerImpl.execPendingActions(FragmentManagerImpl.java:1723)
        at androidx.fragment.app.FragmentManagerImpl$1.run(FragmentManagerImpl.java:146)
        at android.os.Handler.handleCallback(Handler.java:873)
        at android.os.Handler.dispatchMessage(Handler.java:99)
        at android.os.Looper.loop(Looper.java:193)
        at android.app.ActivityThread.main(ActivityThread.java:6669)
        at java.lang.reflect.Method.invoke(Native Method)
        at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:493)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:858)

您需要调用action.setTitle(…),而不是直接调用。

。如果您编辑问题并发布导航资源,我们可能会给您提供更具体的建议。当我添加默认值时,我无法再使用参数调用该方法。@Commonware我有一个片段,其中包含产品的详细信息和我从该片段导航到公司片段的公司列表,当我返回时,它给了我与上面
产品信息相同的错误(这是该类来自产品片段的数据类)缺少
,您能建议一些吗solutions@ELTEGANIMOHAMED:我建议您单独提出一个堆栈溢出问题,包括完整的堆栈跟踪和触发它的代码,包括导航资源。
    Process: com.andreramon.todo, PID: 10014
    java.lang.IllegalArgumentException: Required argument "id" is missing and does not have an android:defaultValue
        at com.andreramon.todo.destinations.AddEditTaskFragmentArgs.fromBundle(AddEditTaskFragmentArgs.java:33)
        at com.andreramon.todo.destinations.AddEditTaskFragment.onViewCreated(AddEditTaskFragment.java:71)
        at androidx.fragment.app.FragmentManagerImpl.moveToState(FragmentManagerImpl.java:895)
        at androidx.fragment.app.FragmentManagerImpl.addAddedFragments(FragmentManagerImpl.java:2092)
        at androidx.fragment.app.FragmentManagerImpl.executeOpsTogether(FragmentManagerImpl.java:1866)
        at androidx.fragment.app.FragmentManagerImpl.removeRedundantOperationsAndExecute(FragmentManagerImpl.java:1822)
        at androidx.fragment.app.FragmentManagerImpl.execPendingActions(FragmentManagerImpl.java:1723)
        at androidx.fragment.app.FragmentManagerImpl$1.run(FragmentManagerImpl.java:146)
        at android.os.Handler.handleCallback(Handler.java:873)
        at android.os.Handler.dispatchMessage(Handler.java:99)
        at android.os.Looper.loop(Looper.java:193)
        at android.app.ActivityThread.main(ActivityThread.java:6669)
        at java.lang.reflect.Method.invoke(Native Method)
        at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:493)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:858)