2012-06-20 60 views
1

从我的StartActivity类是一个Actvity,我使用intent调用另一个活动。将数据从活动传递到其他[不工作]

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

CHANGE_PACK是static final String,changePack的值为true。 (我已经调试检查的话)

但是当我通过

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

获取在TabsActivity这个值packChanged的值是假的。我在互联网上查过,但没有找到帮助。基本上我在我的应用程序中使用完全相同的东西,它工作正常。

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

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

+0

尝试不混合数据类型。 –

+0

changePack也是一个布尔值。我把一个布尔值,并试图获取一个布尔值。 – jeevs

回答

3

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

3

检查如何在清单中声明TabsActivity android:launchMode。 如果它是singleTopsingleTask你应该在你的TabsActivity(而不是onResume)中使用onNewIntent()来从新的意图中获得新鲜的附加物。 getIntent在这种情况下将返回使用该活动

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

}

+0

其启动模式为android:launchMode =“singleInstance” – jeevs

+0

这意味着在startActivity(intent)上不会创建任何新活动实例,因此getIntent将始终向您返回一个旧意向。尝试像我建议覆盖onNewIntent方法,并获得您的额外布尔值 –

+0

感谢@亚历Orlov – jeevs

0

您的代码似乎罚款。唯一的地方,你的方式你正在处理变量CHANGE_PACK。尝试将它与类名一起使用(因为它声明为Static)。使用intent.putExtra(StartActivity.CHANGE_PACK, changePack);

+0

我从StartActivity调用TabsActivity,所以他们不需要提及类名称,因为变量是相同的类。 – jeevs

0

尝试使用此

boolean packChanged; 

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

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

哈克,但它的作品。