亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

當 Activity 重新啟動時,如何恢復 Activity 的片段?

當 Activity 重新啟動時,如何恢復 Activity 的片段?

慕桂英4014372 2022-12-15 15:52:49
我正在測試系統因內存不足而終止應用程序進程后用戶進入我的應用程序的情況。我看到了意想不到的行為,希望得到一些幫助。在我的應用程序中,我有一個活動,我們稱之為ActivityA,它會立即創建一個片段,Fragment A并進行片段替換。 FragmentA顯示其中ListView包含兩個項目的 a。如果用戶單擊第一個項目,Fragment B則會創建第二個片段并替換FragmentA. 否則,FragmentA將創建另一個并替換原來的FragmentA. 我正在嘗試創建一個文件目錄樹。 FragmentA用于目錄,FragmentB用于文件。假設用戶點擊了一個文件。這是測試階段,用戶切換到另一個應用程序,系統因內存不足而終止我的應用程序進程。然后,用戶返回到我的應用程序,希望一切都保持原樣。但是,實際發生的是Fragment A(父目錄)而不是Fragment B(文件)。當用戶單擊后退按鈕時,Fragment B將顯示(文件)。我做錯了什么導致系統以這種方式恢復后臺堆棧?
查看完整描述

1 回答

?
繁花如伊

TA貢獻2012條經驗 獲得超12個贊

當您調用 時,Fragments不為空super.onCreate()時會自動恢復其當前狀態。savedInstanceState


因此,如果您希望通過添加初始片段來進行一次設置,則應始終在其周圍加上一個if (savedInstanceState == null)檢查:


@Override

public void onCreate(Bundle savedInstanceState)

{

    // I assume you accidentally left out these lines

    super.onCreate(savedInstanceState);

    setContentView(R.id.your_content_view);


    if (savedInstanceState == null) {

        FragmentA fragA = new FragmentA();

        FragmentTransaction fragmentTransaction = 

        getSupportFragmentManager().beginTransaction();

        fragmentTransation.replace(R.id.basic_frame, fragA);

        fragmentTransaction.commit();

    }

}

查看完整回答
反對 回復 2022-12-15
  • 1 回答
  • 0 關注
  • 86 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號