我有几个活动,比如A、B、C。活动A启动B,B启动C,依此类推。在我的应用程序中,我放置了一个导航抽屉,允许用户返回活动A。当用户返回到活动A时,我传递了一些标志,这些标志实际上并没有重新启动活动,只是重新开始。
intent = new Intent(activity, A.class);
intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP
| Intent.FLAG_ACTIVITY_SINGLE_TOP);
现在我正在尝试使用bundle传递一些数据。
bundle.putInt("selectedTab", FEATURED_COUPONS);
intent.putExtras(bundle);
但在我的活动A中,bundle总是空的。
if(bundle != null)
{
if(bundle.containsKey("selectedTab"))
{
int tab = bundle.getInt("selectedTab");
}
}
你做事的方式不对。
如果你只想把一个Integer
附加到Intent
附加中,那么不要这样做。。。
bundle.putInt("selectedTab", FEATURED_COUPONS);
intent.putExtras(bundle);
从putExtras(Bundle extras)
的文档。。。
将一组扩展数据添加到意图中密钥必须包括包前缀,例如应用程序com.android.contacts将使用类似"com.android.cantacts.ShowAll"的名称。
相反,只需使用。。。
intent.putExtra("selectedTab", FEATURED_COUPONS);
然而,这并不是你问题的真正原因。正如Sumit Uppal所提到的,您应该在Activity
A中实现onNewIntent(Intent Intent(。然后您可以使用它将"当前"Intent
设置为新的Intent
。。。
@Override
protected void onNewIntent(Intent intent) {
if (intent != null)
setIntent(intent);
}
然后在onResume()
中,您可以使用。。。
Intent intent = getIntent();
然后从该CCD_ 9中得到CCD_。
我认为您应该在onNewIntent(Intent(方法中执行"if(bundle!=null("任务
如果要将数据传递给已创建的活动,则必须使用startActivityForResult并覆盖活动A中的onActivityResult方法。
相反,如果您再次创建活动,我建议在startActivity方法之后在活动中使用finish((。