Android 如何开始活动和结束之前启动的所有其他活动

Android 如何开始活动和结束之前启动的所有其他活动,android,android-intent,Android,Android Intent,我的软件中有一个登录活动和一个主活动。我要做的是启动登录活动,登录用户,然后启动主活动,并从堆栈中删除登录活动,以便用户可以通过按后退按钮访问登录活动。我应该用哪面旗 Intent intent = new Intent(currentClassYoureIn.this, newClassYouWantToBeIn.class); intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); // closes all activities that were

我的软件中有一个登录活动和一个主活动。我要做的是启动登录活动,登录用户,然后启动主活动,并从堆栈中删除登录活动,以便用户可以通过按后退按钮访问登录活动。我应该用哪面旗

Intent intent = new Intent(currentClassYoureIn.this, newClassYouWantToBeIn.class);
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); // closes all activities that were started after "newClassYouWantToBeIn"
startActivity(intent);
或者,您可以启动新的意图,然后使用方法
finish()
关闭当前活动(在其中启动新意图):


好的,我最近也处理了这个问题。您需要重写
onBackPressed()
方法以限制按下后退按钮的操作

所以你应该做的是,在主要的活动中

public void onBackPressed() {

new AlertDialog.Builder(this)
        .setTitle("Alert")
        .setMessage("Please Log out first.")
        .setpositiveButton("Ok", null)
            .create().show();
}
这样,用户在不注销mainactivity页面的情况下无法返回登录页面

另请阅读有关
finish()
的使用


可能会有帮助。请查看。

这个答案对我最有效,希望你也能试试这个

你是什么意思,因此,用户可以访问登录活动,或者应该是这样,用户不能访问登录活动。他不能仅使用后退按钮访问新的登录活动,该按钮将停止主活动,以防在用户未登录时重新登录时出现错误和问题。标记\活动\清除\顶部不会完成所有操作活动。例如,您有4个活动,A、B、C和D,流程是A->B->C->D,现在当您在D上时,您希望启动活动B(从堆栈而不是新实例),然后您可以使用此意图标志。它所做的也是删除B上的所有其他活动(这里是C和D,而不是A)。所以新的状态将是A->B。要了解更多信息,请参阅以下内容,如果您建议的是类似以下内容的内容:Intent=newintent(Login.this,main.class);intent.addFlags(intent.FLAG\u ACTIVITY\u CLEAR\u TOP);星触觉(意向);相信我,我不会完成登录活动。请检查他是否只想完成登录活动,他可以简单地启动主活动,然后调用finish函数。Like Intent Intent=新Intent(LoginActivity.this、mainActivity.class);星触觉(意向);完成()@mikeyaworski不,这不会关闭同一堆栈上但在已启动活动下方的活动。Hossain Tonmoy先生是绝对正确的!那么AlertDialog如何影响任务堆栈呢?
public void onBackPressed() {

new AlertDialog.Builder(this)
        .setTitle("Alert")
        .setMessage("Please Log out first.")
        .setpositiveButton("Ok", null)
            .create().show();
}