有没有办法确定是否通过Intent发送了特定的布尔值?换句话说,我知道如何通过Intent发送数据以及如何将其读回,但我想知道数据是否已发送。
当前的getBooleanExtra
方法需要一个默认值,因此我无法检查是否使用此方法发送它。
我目前有这个:
showNavigationDrawer = getIntent().getBooleanExtra(Extras.EXTRA_SHOW_NAVIGATION_DRAWER, false);
如果根本没有设置Extras.EXTRA_SHOW_NAVIGATION_DRAWER
值,我想做一些额外的工作。显然,如果我得到true
,则意味着它已被发送,但是如果我得到false
则无法告诉。
答案 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)));
}
希望我能帮助你。