簡體   English   中英

后退時管理來自活動的片段代碼

[英]Managing fragment code from activity when back pressed

我有一個 Activity,它的布局是一個片段,可以由不同的 Fragments 類填充。 問題是,當我在 Fragment X 中並按回時,我想覆蓋 onBackPressed 方法以執行詢問用戶是否保存輸入數據的方法。 但是,問題是 onBackPressed 只能從活動中覆蓋,那么我的問題是:

我應該在 Fragment X 中創建一個公共方法並從覆蓋的 onBackPressed 方法中調用它,還是應該使用接口或其他任何方法?

我已經檢查了其他相關帖子,例如如何使用 addToBackStack 在不丟失數據的情況下移回前一個片段,但我認為這是一個不同的問題。

當我想做類似的事情時,我為片段創建了標簽,並在名為 mCurrentFragment 的父活動中創建了一個 Fragment 對象。 每次加載片段時,我都會將其分配給 mCurrentFragment。 所以我會從我的活動中覆蓋 onbackPressed() ,然后檢查片段實例:

@Override
public void onBackPressed() {
    if (mCurrentFragment instanceof FragmentA) {
        //Do something
        //e.g. mCurrentFragment.save();
    } else if (mCurrentFragment instanceof FragmentB) {
        //Do something else
    } else {
        super.onBackPressed()
    }
}

如果你想從一個片段調用一個方法,你只需要使用你創建的 Fragment 對象(在我的例子中是 mCurrentFragment)並訪問它的所有公共方法(如上面的 FragmentA 示例)

§編輯以包含評論中的代碼

暫無
暫無

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

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