从另一个活动移回上一个活动,不知道活动在堆栈中的位置

问题描述

|| 我的应用程序中有一个
TabActivity
,它是\“ base \”
Activity
。从“ 0”开始,用户可以浏览不属于原始TabHost一部分的新Activity(我不会在TabGroups或类似的东西上乱七八糟)。 我的应用程序还具有全局选项菜单,用户应该可以从中导航回到原始的“ 0”并选择某个选项卡。例如,如果用户选择了最左边的选项菜单项,则他们将转到原始“ 0”中的最左边的选项卡。 我怎样才能做到这一点?我不想启动一个新的
TabActivity
,因为原始的
TabActivity
上面已经传播了数据,例如地图点和ListView。理想情况下,我想回到特定的
TabActivity
。这种移动也可能发生在生命周期的任何时刻,例如: 原始
TabActivity
-> Activity1-> Activity2-> Activity3-> Activity n->返回原始
TabActivity
原始
TabActivity
->活动1->返回原始
TabActivity
导航之间可以启动任何数量的活动。因此,在当前活动中调用
finish()
不能满足此要求(据我所知...)。 我的问题/疑虑: 首先,如何做到这一点。 可能由于内存而从堆栈中删除了原始的“ 0”,对吗?如果是这样,该如何处理?我想如果我想出一种方法来找到原始的ѭ0,我可以做一个空值检查,如果不存在,则开始一个新的
TabActivity
。     

解决方法

        想通了。您应在清单中使用ѭ16来表示要切换回的特定ѭ1。根据开发文档,此路由返回到特定的ѭ1(如果存在)。 因此,在清单中,我有:
    <activity
        android:name=\".MainTabsActivity\"
        android:launchMode=\"singleTask\"
        android:label=\"@string/app_name\"
        android:theme=\"@android:style/Theme.NoTitleBar\" >
    </activity>
然后,在任何要切换回ѭ0的ѭ1中,只需调用普通的ѭ22即可。您也可以使用
putExtra()
告诉
TabActivity
切换到新标签页。 在子活动中:
        Intent mainTabsSearchIntent = new Intent(this,MainTabsActivity.class);
        mainTabsSearchIntent.putExtra(\"tabval\",0);
        startActivity(mainTabsSearchIntent);
如果堆栈没有堆栈,它将启动一个新的26,或者由于16参数而切换回旧实例。 为了提供选项卡切换功能,请像这样在主
TabActivity
中覆盖
onNewIntent(Intent intent)
@Override
protected void onNewIntent(Intent intent) {
    super.onNewIntent(intent);
    Log.d(MyApplication.TAG,\"Bringing this Activity back!\");

    Bundle extras = intent.getExtras();
    if (extras != null) {
        tabHost.setCurrentTab(extras.getInt(\"tabval\"));
        Log.d(MyApplication.TAG,\"Switching to tab \" + extras.getInt(\"tabval\"));
    }
}
我希望这对遇到类似问题的人有所帮助。     

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...