通过传递bundle中的新数据来恢复旧活动



我有几个活动,比如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((。

相关内容

  • 没有找到相关文章

最新更新