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

时间:2015-02-27 17:48:13

标签: android android-intent

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

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

我目前有这个:

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

如果根本没有设置Extras.EXTRA_SHOW_NAVIGATION_DRAWER值,我想做一些额外的工作。显然,如果我得到true,则意味着它已被发送,但是如果我得到false则无法告诉。

2 个答案:

答案 0 :(得分:1)

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

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);
}

答案 1 :(得分:0)

如果你真的想检查你的价值是否来,那么你可以帮助 Bundle 对象。您可以通过bundle对象传递布尔值。如果捆绑对象 null ,则在下一个活动中不会收到任何值。但是如果它不是null,那么你肯定会只接收布尔参数的值如果你把它放在包中。它可能是 true false ,具体取决于您设置的值。我在下面提供了两个代码段。一个用于调用活动,另一个用于被调用活动。

致电活动 - >

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

调用活动 - >

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

希望我能帮助你。