Android在按钮点击时返回第一个活动

cpp*_*dev 24 android

我正在编写一个应用程序,我正在处理4个活动,让我们说A,B,C和D.活动A调用B,B调用C,C调用D.在每个活动中,我有一个名为"home"的按钮按钮.当用户在任何B,C,D活动中点击主页按钮时,应用程序应该返回到活动屏幕?

在这种情况下如何模拟"主页"按钮?

syn*_*nic 70

button.setOnClickListener(new View.OnClickListener() {
    public void onClick(View v) {
        startActivity(new Intent(D.this, A.class));
    }
});
Run Code Online (Sandbox Code Playgroud)

声明在你的清单与android:launchMode="singleTask".这样,当你startActivity()从其他活动中打电话,A已经在运行时,它就会把它带到前面.否则它将启动一个新实例.

  • 如果您想在返回主页活动后再次显示活动D,则此功能可以正常工作.但如果你想清除B,C和D,其他答案似乎更合适. (2认同)

小智 25

我看到的唯一问题android:launchMode="singleTask"就是当你最小化应用程序并再次按下应用程序图标启动应用程序时,应用程序从头开始并且不会获得其状态.所以我选择使用

intent.setFlags( Intent.FLAG_ACTIVITY_CLEAR_TOP );
Run Code Online (Sandbox Code Playgroud)

这将只保留一个实例并清除所有活动.

Intent intent = new Intent( context, MyActivity.class );
intent.setFlags( Intent.FLAG_ACTIVITY_CLEAR_TOP );
current_activity.startActivity( intent );
Run Code Online (Sandbox Code Playgroud)

  • 这个问题的+1最佳答案;) (2认同)

小智 5

科特林

fun Context.popToRoot()
{
    val intent = Intent(this, MainActivity::class.java)
    intent.flags = Intent.FLAG_ACTIVITY_CLEAR_TOP
    startActivity(intent)
}
Run Code Online (Sandbox Code Playgroud)

将 MainActivity 更改为您的主要活动。

在任何活动中只需调用:

  this.popToRoot()
Run Code Online (Sandbox Code Playgroud)