簡體   English   中英

按下后退按鈕時不破壞當前活動

[英]Not to destroy current activity on back button is pressed

我有兩個活動,A 和 B。我在 A 中有一個按鈕,按下時會啟動對 B 的新意圖。但是,每當我在 B 中按下后退按鈕時,再次單擊該按鈕將重新啟動 Activity。我不想這樣做,我希望它恢復活動 B。實際上我正在活動 B 中進行一些網絡連接,除非用戶想要刷新,否則我想保存。 我該怎么做? 提前致謝

使用

@Override
    public void onBackPressed(){
        moveTaskToBack(true);
    }

希望,它必須幫助你

你需要Overrider the

onBackPressed

方法並從那里開始這樣的活動:

@Override
    public void onBackPressed() {
    Intent intent = new Intent(this, activityA.class);
    startActivityForResult(intent, PICK_CONTACT_REQ);
}

這聽起來像你需要重新思考你的架構。 你說:

實際上我在Activity B中做了一些網絡,除非用戶想要刷新,否則我想保存。

如果是這種情況,您可能不希望在ActivityB中進行聯網。 也許您應該從ActivityB啟動Service來進行網絡連接。 服務和活動可以相互通信,以便活動可以使用戶了解網絡狀態的最新信息。 如果用戶在ActivityB中按下BACK,它可以完成(像往常一樣)並返回ActivityA。 在這種情況下,服務仍在管理網絡。 當用戶再次啟動ActivityB(來自ActivityA)時,ActivityB的新實例可以與服務通信以查看是否有任何網絡正在進行,如果是,它可以獲取該網絡的當前狀態或啟動它或停止它或隨你。

我想我為時已晚,但我遇到了類似的問題。

我有兩個活動 A、B 和 A 中的下一個按鈕。

每當我嘗試這樣做時:A->按下一個按鈕->B->按后退按鈕->A->按下一個按鈕->B,當我按下后退按鈕時,B屏幕被破壞了。 所以當我第二次回到 B 時,它是一個新創建的 B(我輸入的所有信息都沒有了)。

所以當我只想回到原來的B時,就像A->B->A->新B! :(

所以我所做的是,在活動 B 中,我覆蓋了 onBackPressed() 函數,因此它不會破壞活動。 我還設置了標志,以便如果有一個 A 活動已經在運行,它只會將它拉到前面而不是創建一個新的 A 活動。

@Override
public void onBackPressed() {
        Intent intent = new Intent(getApplicationContext(), ActivityA.class);
        intent.addFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP | Intent.FLAG_ACTIVITY_REORDER_TO_FRONT);
        startActivity(intent);
    }

然后,對於活動 A 中下一個按鈕的 onclicklistener 函數,我類似地設置了標志。

public void onClickNextbutton(View v){
        Intent intent = new Intent(getApplicationContext(), ActivityB.class);
        intent.addFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP | Intent.FLAG_ACTIVITY_REORDER_TO_FRONT);
        startActivity(intent);
    }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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