Android TaskStackBuilder.startActivities()不';I don’我没有按预期工作
可能的双重 虽然有很多关于这个话题的问题得到了回答,但没有一个能解决我的问题。事实上,我在和他们一起玩,但无法让他们投入工作:( 我有一个启动屏幕,我正在检查一个标志(我从后端获得它),并将用户导航到SecondActivity,例如,如果标志为true,则导航到SecondActivity,而不是FirstActivity 我的清单是这样的:Android TaskStackBuilder.startActivities()不';I don’我没有按预期工作,android,back-stack,activity-stack,taskstackbuilder,Android,Back Stack,Activity Stack,Taskstackbuilder,可能的双重 虽然有很多关于这个话题的问题得到了回答,但没有一个能解决我的问题。事实上,我在和他们一起玩,但无法让他们投入工作:( 我有一个启动屏幕,我正在检查一个标志(我从后端获得它),并将用户导航到SecondActivity,例如,如果标志为true,则导航到SecondActivity,而不是FirstActivity 我的清单是这样的: <activity android:name="com.package.name.SplashActivity"
<activity
android:name="com.package.name.SplashActivity"
android:label="@string/app_name"
android:screenOrientation="portrait"
android:theme="@style/AppTheme.NoActionBar" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity
android:name="com.package.name.Firstctivity"
android:label="@string/app_name"
android:screenOrientation="portrait" >
</activity>
<activity
android:name="com.package.name.SecondActivity"
android:label="@string/title_tracking"
android:screenOrientation="portrait"
android:parentActivityName="com.package.name.Firstctivity">
<meta-data
android:name="android.support.PARENT_ACTIVITY"
android:value="com.package.name.Firstctivity" />
</activity>
现在,当用户启动应用程序并且标志不为空时,他将被引导到SecondActivity。然而,通过单击“上一步”按钮,应用程序将关闭,但我希望看到的是FirstActivity。
在SecondActivity中,通过单击up carret,用户将导航到FirstActivity,若用户单击back按钮,我希望看到相同的行为
如果您有任何建议,我们将不胜感激。谢谢。尽管Up navigation运行良好(基于我上面的代码),后退按钮的方式不同。我不确定TaskStackBuilder中是否存在错误,或者这是我的问题,但这是我用来解决问题的方法。我发现的原因是后退按钮按时间顺序在历史记录中导航。因为在此之前没有活动,所以应用程序关闭 我在我的
intent intent.putExtra(SecondActivity.EXTRA\u BACK\u MAIN\u ACTIVITY,true)中添加了另一个标志;
并在我的SecondActivity中添加了以下代码:
private void checkFlag()
{
...
if (flag == null)
{
return;
}
// show tracking screen
final Intent intent = new Intent(SplashActivity.this, SecondActivity.class);
intent.putExtra(SecondActivity.EXTRA_ID, "1234");
intent.putExtra(SecondActivity.EXTRA_ACTION, SecondActivity.ACTION_VISITING);
intent.putExtra(SecondActivity.EXTRA_LIVE_STATUS, true);
TaskStackBuilder sBuilder = TaskStackBuilder.create(SplashActivity.this);
sBuilder.addNextIntent(new Intent(SplashActivity.this, FirstActivity.class));
sBuilder.addNextIntent(intent);
sBuilder.startActivities();
SplashActivity.this.finish();
}
@Override
public void onBackPressed()
{
final Bundle extras = this.getIntent().getExtras();
if ((extras != null) && extras.containsKey(SecondActivity.EXTRA_BACK_MAIN_ACTIVITY))
{
setupNavUtils();
}
}
private void setupNavUtils()
{
final Intent intent = new Intent(this, FirstActivity.class);
if (NavUtils.shouldUpRecreateTask(this, intent))
{
TaskStackBuilder.create(this).addNextIntent(intent).startActivities();
super.finish();
}
else
{
NavUtilsLegacy.navigateUpTo(this, intent);
}
}
将第一个活动的
launchMode
设置为singleTop