我想通过backstack中的只有一个主要活动启动每个活动,所以我总是可以返回带有后退按钮的主要活动(例如,用于启动我使用的活动< EM> startActivity()的):
看起来我需要在启动每个新活动时使用 FLAG_ACTIVITY_CLEAR_TASK 标志,但它也会清除主要活动。我已经尝试 FLAG_ACTIVITY_CLEAR_TOP 在第一情况下工作正常,但在第二中没有。
如果有人遇到同样的问题,请提供帮助。任何想法赞赏!谢谢!
我的主要活动:
<activity
android:name=".activity.main.MainActivity"
android:label="@string/app_name"
android:screenOrientation="portrait"
android:configChanges="orientation|keyboardHidden"
android:launchMode="singleTop">
<meta-data
android:name="android.app.default_searchable"
android:value=".activity.search.SearchActivity" />
</activity>
答案 0 :(得分:0)
在onBackPressed()中触发Main Activity的意图时设置 FLAG_ACTIVITY_LAUNCHED_FROM_HISTORY 标志。
答案 1 :(得分:0)
确保在finish()
启动Activity1
时致电Activity2
。这将确保您的任务堆栈如下所示:MainActivity-&gt; Activity2。
答案 2 :(得分:0)
正如@EmmanuelMtali所提到的,我出于这个原因使用了父活动。
对于与Main不同的活动,我将元数据(和 android:parentActivityName , API&gt; 16 )设置为如下:
<activity
android:name=".activity.user.LoginActivity"
android:screenOrientation="portrait"
android:configChanges="orientation|keyboardHidden"
android:launchMode="singleTop"
android:parentActivityName=".activity.main.MainActivity">
<meta-data
android:name="android.support.PARENT_ACTIVITY"
android:value=".activity.main.MainActivity" />
</activity>
当我需要开始新活动时,我使用意图数组和 startActivities()方法:
public static Intent[] createIntentsWithMainActivityInStack(Context context, Intent topMostIntent) {
TaskStackBuilder taskStackBuilder = TaskStackBuilder.create(context);
topMostIntent.addFlags(Intent.FLAG_ACTIVITY_NO_ANIMATION);
Intent[] intents =
taskStackBuilder
.addNextIntentWithParentStack(topMostIntent)
.getIntents();
return intents; }
和
Intent[] intents = createIntentsWithMainActivityInStack(context, new Intent(context, LoginActivity.class));
startActivities(intents);
答案 3 :(得分:-1)
在每项活动中尝试此操作,以便在您返回时按主要活动打开:
@Override
public void onBackPressed()
{
super.onBackPressed();
Intent intent = new Intent(ACTIVITYTHREE.this,MAINACTIVITY.class);
startActivity(intent);
}