1

从我的 StartActivity 类(一个 Activity)中,我正在使用意图调用另一个活动。

Intent intent = new Intent(getApplicationContext(), TabsActivity.class);
intent.putExtra(CHANGE_PACK, changePack);
startActivity(intent);

CHANGE_PACK 是静态最终字符串,changePack 值为 true。(我已经通过调试检查过)

但是当我在 TabsActivity 中获取这个值时

boolean packChanged = getIntent().getBooleanExtra(StartActivity.CHANGE_PACK, false);

packChanged 的​​值为 false。我在网上查了一下,但没有找到帮助。基本上我在我的应用程序中使用完全相同的东西,它工作正常。

任何人都可以说出为什么它不起作用。

附加:两个活动都在清单中注册,我在两个活动的 onResume() 方法中这样做。

4

5 回答 5

3

尝试getIntent().getBooleanExtra(...)在 onCreate 中运行。或者覆盖protected void onNewIntent(Intent intent)并从该意图对象中检索您的布尔值。

于 2012-06-20T07:31:01.247 回答
3

检查清单中的 TabsActivityandroid:launchMode是如何声明的。如果是singleTop, 或者singleTask您应该onNewIntent()在 TabsActivity 中使用(而不是 onResume)来从新意图中获得新的附加功能。在这种情况下,getIntent 将返回用于创建此 Activity 实例的第一个原始意图

http://developer.android.com/reference/android/app/Activity.html#onNewIntent(android.content.Intent )

PS示例:

public class MyActivity extends Activity {

...

@Override
protected void onNewIntent(final Intent intent) {
    super.onNewIntent(intent);
    boolean packChanged = intent.getBooleanExtra(StartActivity.CHANGE_PACK, false);
}

}

于 2012-06-20T07:33:50.113 回答
1

我也有这个问题,无法很好地解决。我最终使用了以下技巧:

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

哈克,但它的工作原理。

于 2012-11-18T22:22:11.317 回答
0

你的代码看起来不错。您处理CHANGE_PACK变量的唯一方式。尝试将它与类名一起使用(因为它声明为静态)。使用 intent.putExtra(StartActivity.CHANGE_PACK, changePack);.

于 2012-06-20T07:35:06.143 回答
0

尝试使用这个

boolean packChanged;

Bundle extra=getIntent().getExtras();
    if(extra!=null){
        packChanged=extra.getBoolean("enter your key which u have used in StartActivity");

    }
于 2012-06-20T07:48:34.950 回答