如何完成其​​他Activity的主要活动

时间:2018-02-06 07:32:44

标签: java android

您好,您如何完成主要活动 假设有3个活动和1个片段

LoginActivity,MainActivity,infoFrgMent,ChangePwdActivity。

该情况是我登录LoginActivity然后MainActivity将显示LoginActivityfinish()然后我将转到我的信息'infoFrgMent'然后我想要我更改密码后更改密码。

LoginActivity会再次显示重新登录,但每当我尝试按下MainActivity时,我会显示finishedx = {}; 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.

3 个答案:

答案 0 :(得分:2)

您需要从堆栈中删除以前的活动

setFlagsintent

的{p> MainActivityLoginActivity
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();

就是这样