[英]Finish activity from Another activity onBackPressed
我有一個Activity假設Activity_A
調用了Activity_B
,而沒有顯示任何內容,則使用startActivityforResult()
轉到了Activity_C
。
這些按預期工作,用戶看不到Activity_b
並且如果Activity_c
返回正確的return_code, Activity_B
根據代碼運行,但是如果用戶按下“后退”按鈕,它將進入一個空的Activity_B
(因為信息是從Activity_C返回的),然后轉到我想要的是Activity_A
,如果按下“后退”按鈕,它將轉到Activity_A
否則將按現在的方式工作。 我用Intent
去Activity_A
使用標志FLAG_ACTIVITY_REORDER_TO_FRONT
但隨后它只是移動Activity_B
在活動列表中的下一個位置。
Activity_A
之前有多個Activity_A
,因此使用Flag清除頂部將無濟於事。
我試着做一個Activity變量,它將調用finish()
, onBackPressed()
但它只會返回錯誤的空指針
Activity_C上的代碼
@Override
public void onBackPressed(){
Intent intent = new Intent(getApplicationContext(),GalleryPreview.class);
intent.setFlags(Intent.FLAG_ACTIVITY_REORDER_TO_FRONT);
bg_edit1 abc = new bg_edit1();
startActivityIfNeeded(intent,0);
abc.t1.finish();
// Intent i = new Intent("finish_activity");
// sendBroadcast(i);
finish();
}
Activity_B上的代碼
使用廣播接收器(我認為我的廣播接收器實現錯誤或不起作用)
BroadcastReceiver broadcastReceiver = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
String action = intent.getAction();
if (action.equals("finish_activity")) {
finish();
}
}
};
registerReceiver(broadcastReceiver, new IntentFilter("finish_activity"));
unregisterReceiver(broadcastReceiver);
我在嘗試Activity / AppCompatActivity方法時遇到的錯誤
void androidx.appcompat.app.AppCompatActivity.finish()' on a null object reference
您無需完成其他Activity
。 那是錯誤的方法。 要在按下后退按鈕時從C
直接返回A
,請在C
執行以下操作:
@Override
public void onBackPressed(){
Intent intent = new Intent(this,GalleryPreview.class);
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP |
Intent.FLAG_ACTIVITY_SINGLE_TOP);
startActivity(intent);
}
通過添加CLEAR_TOP
標志,將自動從堆棧中刪除活動B
通過添加SINGLE_TOP
標志,確保將使用A
的現有實例,而不是A
的新實例。
您也不需要活動B
的BroadcastReceiver
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.