您好,您如何完成主要活动 假设有3个活动和1个片段
LoginActivity,MainActivity,infoFrgMent,ChangePwdActivity。
该情况是我登录LoginActivity
然后MainActivity
将显示LoginActivity
将finish()
然后我将转到我的信息'infoFrgMent'然后我想要我更改密码后更改密码。
LoginActivity
会再次显示重新登录,但每当我尝试按下MainActivity
时,我会显示finished
。x = {};
for(var i=0;i<tmp.length;i++)
{
if(!x[tmp[i]])
x[tmp[i]] = [];
x[tmp[i]].push(i);
}
//x['A'] and x['B'] contains what you're looking for.
。
答案 0 :(得分:2)
您需要从堆栈中删除以前的活动
从setFlags
到intent
的{p> 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
答案 1 :(得分:0)
您需要添加Intent.FLAG_CLEAR_TOP。此标志确保完成堆栈中目标活动之上的所有活动,并显示该活动。
您需要的另一件事是SINGLE_TOP标志。如果已经在堆栈中创建了一个新活动,则可以阻止Android创建新活动。
请注意,如果已经创建了活动,那么这些标志的意图将在目标活动中的onNewIntent(intent)方法中传递(您需要重载它来处理它)。
然后在onNewIntent中你有一个名为restart的方法或者会调用finish()并向自己发起一个新意图的方法,或者有一个将设置新数据的repopulate()方法。我更喜欢第二种方法,它更便宜,你总是可以将onCreate逻辑提取到一个单独的方法中,你可以调用它来填充。
答案 2 :(得分:-1)
要完成另一个活动,您必须创建一个静态方法来完成此操作,例如:
<强> 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();
就是这样