Android 如何处理只出现一次的介绍活动的后堆栈
我的应用程序目前有一个主要活动,处理启动器意图和文件打开意图。我想添加一个介绍活动,在第一次运行时出现在Main之前 Intro活动为用户提供了转到Main或转到activity C的选项,后者应将Main视为其父活动 正确的处理方法是什么Android 如何处理只出现一次的介绍活动的后堆栈,android,android-intent,android-activity,android-navigation,Android,Android Intent,Android Activity,Android Navigation,我的应用程序目前有一个主要活动,处理启动器意图和文件打开意图。我想添加一个介绍活动,在第一次运行时出现在Main之前 Intro活动为用户提供了转到Main或转到activity C的选项,后者应将Main视为其父活动 正确的处理方法是什么 我是否创建了一个新的根活动来显示介绍或转发 主要目的是什么 我是否将Main作为根活动,并在适当的情况下使用它来启动简介 无论采用哪种方法,我如何正确处理后堆栈,以便在用户离开简介后将Main视为根活动 谢谢你的建议 如果使用第一种方法,如果用户看到了介绍,
SharedReference
true中保留bool值,如果用户没有看到,则为falsemain活动开始,然后检查一个值或您决定显示介绍的任何内容,然后在您的条件通过时启动它,然后返回您的main活动
,即使您想启动ActivityC
,也可以从那里启动它
MainActivity
后调用finish,从Backstack
中删除不需要的Activity
,在这种情况下,IntroActivity
从Backstack
中删除IntroActivity
,如果将MainActivity
作为根目录,则它将按照您的需要工作
SharedReference
true中保留bool值,如果用户没有看到,则为falsemain活动开始,然后检查一个值或您决定显示介绍的任何内容,然后在您的条件通过时启动它,然后返回您的main活动
,即使您想启动ActivityC
,也可以从那里启动它
您还可以在启动
MainActivity
后调用finish,从Backstack
中删除不需要的Activity
,在这种情况下,IntroActivity
从Backstack
中删除IntroActivity
,如果您将MainActivity
作为根目录,它将根据您的需要工作。您应该为最常见的情况编写应用程序代码,然后为所有其他情况构建backbackbackback。我假设最常见的情况是:用户运行应用程序(在第一次运行后)并输入MainActivity
由此,您可以构造其他用户流。一位具有适当逻辑的伪代码:
class MainActivity extends Activity {
public void onCreate(Bundle state) {
super.onCreate(state);
setContentView(...);
// get the intent used to launch this activity to work out the logic
Intent intent = getIntent();
// how were we launched:
if (/*is first run? */) {
// switch from MainActivity to IntroActivity
startActivity(IntroActivity);
finish();
return;
}
else if ( /* was launched from intro and not going to ActivityC */ ) {
// carry on as normal!
}
else if ( /* was launched from intro and going to ActivityC */ ) {
// launch ActivityC (which will now have MainActivity as its parent)
startActivity(ActivityC);
}
/* if we reach here, the user launched the app normally (the most
common case) or we have been launched from Intro */
....
}
}
简介:
class IntroActivity extends Activity {
public launchNextActivity(boolean gotoActivityC) {
// whatever the user chooses, we return to MainActivity
Intent i = new Intent(this, MainActivity.this);
// tell MainActivity if we want to go to ActivityC
i.putExtra("GOTO_ACTIVITY_C", gotoActivityC);
// launch MainActivity and finish the Intro
startActivity(i);
finish();
}
}
我将让您替换逻辑注释并填写其余内容。您应该为最常见的情况编写应用程序代码,然后为所有其他情况构建backbackback。我假设最常见的情况是:用户运行应用程序(在第一次运行后)并输入
MainActivity
由此,您可以构造其他用户流。一位具有适当逻辑的伪代码:
class MainActivity extends Activity {
public void onCreate(Bundle state) {
super.onCreate(state);
setContentView(...);
// get the intent used to launch this activity to work out the logic
Intent intent = getIntent();
// how were we launched:
if (/*is first run? */) {
// switch from MainActivity to IntroActivity
startActivity(IntroActivity);
finish();
return;
}
else if ( /* was launched from intro and not going to ActivityC */ ) {
// carry on as normal!
}
else if ( /* was launched from intro and going to ActivityC */ ) {
// launch ActivityC (which will now have MainActivity as its parent)
startActivity(ActivityC);
}
/* if we reach here, the user launched the app normally (the most
common case) or we have been launched from Intro */
....
}
}
简介:
class IntroActivity extends Activity {
public launchNextActivity(boolean gotoActivityC) {
// whatever the user chooses, we return to MainActivity
Intent i = new Intent(this, MainActivity.this);
// tell MainActivity if we want to go to ActivityC
i.putExtra("GOTO_ACTIVITY_C", gotoActivityC);
// launch MainActivity and finish the Intro
startActivity(i);
finish();
}
}
我将让您替换逻辑注释并填写其余部分。我将选择第一个,因为介绍仅用于第一次运行。在第二次中,总是由主活动(选择活动)决定重定向到活动C或继续。我会选择第一次,因为介绍仅用于第一次运行。在第二次中,始终由主活动(选择活动)决定重定向到活动C或继续。