[英]Android finish Activity and start another one
我很好奇一件事。 我怎樣才能完成當前的活動並開始另一個活動。
示例:
MainActivity
--(starts)--> LoginActivity
--(if success, starts)--> SyncActivity
--(if success start)--> MainActivity (with updated data).
所以我希望SyncActivity
在成功同步后啟動MainActivity
,如果我按回按鈕不返回SyncActivity
或在SynActivity
之前打開的任何其他活動。
我試過這段代碼:
Intent intent = new Intent(Synchronization.this, MainActivity.class);
intent.addFlags(Intent.FLAG_ACTIVITY_NO_HISTORY);
startActivity(intent);
this.finish();
但它不能正常工作。 任何想法如何使事情正常工作?
采用
Intent intent = new Intent(SyncActivity.this, MainActivity.class);
intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
startActivity(intent);
從你的OP來看,我不確定你是否絕對必須初始化你的mainActivity兩次..
Android的設計使用戶永遠不會真正關閉應用。 專注於重寫Android生命周期方法,如OnResume和OnPause,以保存UI數據等。
因此,您不需要顯式地finish()
主要活動(實際上不應該)。 要從先前的活動接收登錄或同步數據,只需覆蓋OnActivityResult()
方法即可。 但是,要執行此操作,必須使用startActivityForResult(intent)
啟動活動。 因此,對於每個活動,您應該這樣做:
主要活動:
static public int LOGIN_RETURN_CODE = 1;
開始登錄:
Intent intent = new Intent(MainActivity.this, LogInActivity.class);
startActivityForResult(intent, LOGIN_RETURN_CODE);
收到登錄信息:
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
switch (requestCode) {
case LOGIN_RETURN_CODE:
//do something with bundle attached
}
}
登錄活動:
static public int SYNC_RETURN_CODE = 2;
開始同步:
Intent intent = new Intent(LogInActivity.this, SyncActivity.class);
startActivityForResult(intent,SYNC_RETURN_CODE);
收到信息並返回Main:
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
switch (requestCode) {
case MainActivity.SYNC_RETURN_CODE:
Intent intent = new Intent(...);
intent.setResult(RESULT_OK);
finish();
}
}
這可能不是全部編譯,但希望你能得到這個想法。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.