[英]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.