[英]How to finish the main activity from other Activity
您好,您如何完成主要活动假设有3个活动和1个片段
LoginActivity,MainActivity,infoFrgMent,ChangePwdActivity。
场景是当我登录LoginActivity
MainActivity
将显示LoginActivity
将finish()
然后我将转到“ infoFrgMent”信息,然后在更改密码后想要更改密码。
LoginActivity
将再次出现以重新登录,但是每当我尝试按回去时, MainActivity
就会出现并且尚未finished
。
您需要删除以前的活动表单堆栈
setFlags
到intent
从MainActivity
到LoginActivity
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK);
参考: https : //developer.android.com/guide/components/activities/tasks-and-back-stack.html
您需要添加Intent.FLAG_CLEAR_TOP。 该标志确保堆栈中目标活动之上的所有活动均已完成并显示。
您需要的另一件事是SINGLE_TOP标志。 如果堆栈中已经创建了一个新活动,则通过此活动您可以防止Android创建新活动。
请注意,如果已经创建了活动,则带有这些标志的意图将在目标活动中的名为onNewIntent(intent)的方法中传递(您需要对其进行重载以进行处理)。
然后在onNewIntent中,您有一个称为restart的方法或将调用finish()并对其自身启动新意图的方法,或者具有一个repopulate()方法来设置新数据。 我更喜欢第二种方法,因为它比较便宜,并且您始终可以将onCreate逻辑提取到一个单独的方法中,以进行填充。
要完成另一个活动,您必须创建一个静态方法来完成此操作,如下所示:
MainActivity.java
private static MainActivity activity;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main_activity);
activity = this;
}
public static void finishThis()
{
try
{
if (activity != null)
{
activity.finish();
}
}
catch (Exception ex)
{
ex.printStackTrace();
}
}
并这样称呼它:
AnotherActivity.java
MainActivity.finishThis();
而已
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.