簡體   English   中英

如何完成其​​他活動中的主要活動

[英]How to finish the main activity from other Activity

您好,您如何完成主要活動假設有3個活動和1個片段

LoginActivity,MainActivity,infoFrgMent,ChangePwdActivity。

場景是當我登錄LoginActivity MainActivity將顯示LoginActivityfinish()然后我將轉到“ infoFrgMent”信息,然后在更改密碼后想要更改密碼。

LoginActivity將再次出現以重新登錄,但是每當我嘗試按回去時, MainActivity就會出現並且尚未finished

您需要刪除以前的活動表單堆棧

setFlagsintentMainActivityLoginActivity

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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM