导航组件:从全局操作传递参数会导致NullPointerException

时间:2019-08-23 23:37:25

标签: java android nullpointerexception navigation-drawer android-architecture-navigation

正在使用的库:导航组件(来自android本身)

我正在尝试通过全局操作将参数(带有safe-args)传递给活动。通过在导航抽屉中单击一个项目来启动该活动(因此将其声明为全局操作)。因此,我不能简单地从另一个类传递参数。

启动成功,但是当尝试检索参数时,出现NullPointerException。

nav_graph.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"
    app:startDestination="...">
...

   <activity
        android:id="@+id/myAct"
        android:name="com.example.client.MyActivity"
        android:label="MyActivity"
        tools:layout="@layout/activity_my">
        <argument
            android:name="util_bool"
            android:defaultValue="false"
            app:argType="boolean" />
    </activity>

    <!--Global action-->

    <action
        android:id="@+id/launch_util"
        app:destination="@id/myAct">
        <argument
            android:name="util_bool"
            android:defaultValue="true"
            app:argType="boolean" />
    </action>
</navigation>

MyActivity.java

  @Override
    protected void onCreate(@Nullable Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_scan_barcode);
        // This results in the NullPointerException:
        boolean utilBool = NavGraphDirections.launchUtil().getUtilBool();

    }

activity_main_drawer.xml

<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    tools:showIn="navigation_view">
    <item android:title="....">
        <menu>
            <group android:checkableBehavior="single">

                <item
                    android:id="@+id/myAct"
                    android:icon="@drawable/start_icon"
                    android:menuCategory="secondary"
                    android:checkable="false"
                    android:title="Beginne" />

                ...
            </group>
        </menu>
    </item>

    <item android:title="....">
        <menu>
            <item
                ...
        </menu>
    </item>

</menu>

1 个答案:

答案 0 :(得分:1)

var dbx = new Dropbox.Dropbox({ accessToken: 'Enter_Access_Token_Here' }); 类与Directions一起使用。您要使用为每个目标生成的navigate()类来检索参数:

Args
相关问题