确定数据是否通过意图发送

Determine if data was sent via intent

有什么方法可以确定是否通过 Intent 发送了特定的布尔值?换句话说,我知道如何通过 Intent 发送数据以及如何读回数据,但我想知道是否发送了数据。

当前的 getBooleanExtra 方法需要一个默认值,所以我无法检查它是否不是使用此方法发送的。

我目前有这个:

showNavigationDrawer = getIntent().getBooleanExtra(Extras.EXTRA_SHOW_NAVIGATION_DRAWER, false);

如果根本没有设置 Extras.EXTRA_SHOW_NAVIGATION_DRAWER 值,我想做一些额外的工作。显然,如果我收到 true,则表示已发送,但是如果我收到 false,则无法判断。

这可以通过提取意向包来完成:

Bundle b = getIntent().getExtras();
boolean hasNavDrawerSetting = b.containsKey(Extras.EXTRA_SHOW_NAVIGATION_DRAWER);

if (hasNavDrawerSetting) {
    showNavigationDrawer = getIntent().getBooleanExtra(Extras.EXTRA_SHOW_NAVIGATION_DRAWER, false);
} else {
    showNavigationDrawer = getResources().getBoolean(R.bool.hasSideMenu);
}

如果你真的想检查你的价值是否到来,那么你可以借助 Bundle 对象。您可以通过 bundle 对象传递布尔值。如果 bundle 对象是 null 则在下一个 activity 中不会收到任何值。但是,如果它不为 null,那么如果您将布尔参数放在 bundle 中,那么您肯定只会收到布尔参数的值 。根据您设置的值,它可能是 truefalse。下面我提供了两个代码片段。一个用于调用 activity,另一个用于调用 activity.

正在调用 Activity -->

        Intent intent = new Intent(this,Experimental.class);
        Bundle b = new Bundle();
        b.putBoolean("key",true);
        startActivity(intent.putExtra("bundle",b));

已调用 Activity -->

    setContentView(R.layout.experimental);
    Bundle b = getIntent().getBundleExtra("bundle");
    if(b != null){
        Log.d("Value",String.valueOf(b.getBoolean("key",false)));
    }

希望能帮到你。