Android 从另一个活动移回上一个活动,不知道活动在堆栈中的位置
我有一个TabActivity,它是我的应用程序中的基本活动。通过TabActivity,用户可以浏览不是原始TabHost一部分的新活动,我不想与TabGroups之类的东西混在一起 我的应用程序还有一个全局选项菜单,用户应该能够从中导航回原始选项卡Activity并选择某个选项卡。例如,如果用户选择了最左侧的选项菜单项,他们将转到原始选项卡活动中最左侧的选项卡 我怎样才能完成这个行为?我不想启动一个新的TabActivity,因为原始的TabActivity上有像映射点和ListView这样的数据。理想情况下,我想回到具体的活动。此移动也可能发生在生命周期中的任何时间点,例如: 原始选项卡Activity->Activity1->Activity2->Activity3->Activity n->返回原始选项卡Activity 原始TabActivity->Activity1->返回原始TabActivity 在导航之间可以启动任意数量的活动。因此,据我所知,在当前活动中调用finish不能满足这一要求 我的问题/关注: 主要是如何做到这一点。 由于内存原因,原始TabActivity可能会从堆栈中删除,对吗?如果是,如何处理?我假设如果我找到了一种定位原始TabActivity的方法,我可以只检查null,如果不存在,就启动一个新的TabActivity。Android 从另一个活动移回上一个活动,不知道活动在堆栈中的位置,android,android-intent,android-tabhost,Android,Android Intent,Android Tabhost,我有一个TabActivity,它是我的应用程序中的基本活动。通过TabActivity,用户可以浏览不是原始TabHost一部分的新活动,我不想与TabGroups之类的东西混在一起 我的应用程序还有一个全局选项菜单,用户应该能够从中导航回原始选项卡Activity并选择某个选项卡。例如,如果用户选择了最左侧的选项菜单项,他们将转到原始选项卡活动中最左侧的选项卡 我怎样才能完成这个行为?我不想启动一个新的TabActivity,因为原始的TabActivity上有像映射点和ListView这样
我明白了。对于要切换回的特定活动,应在清单中使用launchMode=singleTask。根据这条路线,如果该活动存在,则返回到该特定活动 因此,在我的清单中,我有:
<activity
android:name=".MainTabsActivity"
android:launchMode="singleTask"
android:label="@string/app_name"
android:theme="@android:style/Theme.NoTitleBar" >
</activity>
如果堆栈没有MainTabsActivity,这将启动新的MainTabsActivity,或者由于launchMode=singleTask参数而切换回旧实例
为了提供选项卡切换功能,请在主选项卡Activity中覆盖onNewIntentIntent意图,如下所示:
我希望这能帮助那些有类似问题的人。哇!只是在清单中添加了一行android:launchMode=singleTask就帮了我的忙。谢谢Rockmaninoff!我已经为此搜索了一个多小时。这正是我当前场景的问题!
Intent mainTabsSearchIntent = new Intent(this, MainTabsActivity.class);
mainTabsSearchIntent.putExtra("tabval", 0);
startActivity(mainTabsSearchIntent);
@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"));
}
}