从我的StartActivity类开始,我正在调用另一个使用intent的活动。
Intent intent = new Intent(getApplicationContext(), TabsActivity.class);
intent.putExtra(CHANGE_PACK, changePack);
startActivity(intent);
CHANGE_PACK是静态最终String,changePack值为true。 (我通过调试检查了它)
但是当我通过
在TabsActivity中获取此值时boolean packChanged = getIntent().getBooleanExtra(StartActivity.CHANGE_PACK, false);
packChanged的值为false。我在网上查了一下,但没有找到帮助。基本上我在我的应用程序中使用完全相同的东西,它工作正常。
任何人都可以告诉它为什么不起作用。
附加:两个活动都在清单中注册,我在两个活动的onResume()方法中执行此操作。
答案 0 :(得分:3)
尝试在onCreate中运行getIntent().getBooleanExtra(...)
。或者覆盖protected void onNewIntent(Intent intent)
并从该意图对象中检索您的布尔值。
答案 1 :(得分:3)
检查清单中如何声明TabsActivity android:launchMode
。
如果是singleTop
或singleTask
,您应该在TabsActivity中使用onNewIntent()
(而不是onResume)从新意图中获取新的额外内容。在那种情况下,getIntent将返回用于创建此Activity的实例的第一个原始意图
http://developer.android.com/reference/android/app/Activity.html#onNewIntent(android.content.Intent)
P.S。例如:
public class MyActivity extends Activity {
...
@Override
protected void onNewIntent(final Intent intent) {
super.onNewIntent(intent);
boolean packChanged = intent.getBooleanExtra(StartActivity.CHANGE_PACK, false);
}
}
答案 2 :(得分:1)
我也遇到了这个问题,并且无法很好地解决问题。我最终使用了以下hack:
Intent intent = new Intent(getApplicationContext(), TabsActivity.class);
intent.putExtra(CHANGE_PACK, Boolean.toString(changePack));
startActivity(intent);
然后
boolean packChanged = Boolean.parseBoolean(getIntent().getStringExtra(StartActivity.CHANGE_PACK));
Hacky,但它确实有效。
答案 3 :(得分:0)
您的代码似乎很好。您处理CHANGE_PACK
变量的唯一方式。尝试将它与类名一起使用(因为它声明为Static)。使用intent.putExtra(StartActivity.CHANGE_PACK, changePack);
。
答案 4 :(得分:0)
尝试使用此
boolean packChanged;
Bundle extra=getIntent().getExtras();
if(extra!=null){
packChanged=extra.getBoolean("enter your key which u have used in StartActivity");
}