91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

android fragment如何保存狀態

小樊
120
2024-06-26 16:21:46
欄目: 編程語言

Android Fragment有多種方法可以保存狀態,以下是一些常用的方法:

  1. 使用Bundle:在Fragment中重寫onSaveInstanceState方法,將需要保存的數據放入Bundle中,然后在onCreate方法中進行恢復。例如:
@Override
public void onSaveInstanceState(Bundle outState) {
    super.onSaveInstanceState(outState);
    outState.putString("key", value);
}

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    if (savedInstanceState != null) {
        value = savedInstanceState.getString("key");
    }
}
  1. 使用SharedPreferences:將需要保存的數據存儲在SharedPreferences中,在Fragment銷毀時保存數據,在Fragment創建時讀取數據。例如:
@Override
public void onDestroy() {
    super.onDestroy();
    SharedPreferences preferences = getActivity().getSharedPreferences("MyPrefs", Context.MODE_PRIVATE);
    SharedPreferences.Editor editor = preferences.edit();
    editor.putString("key", value);
    editor.apply();
}

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    SharedPreferences preferences = getActivity().getSharedPreferences("MyPrefs", Context.MODE_PRIVATE);
    value = preferences.getString("key", "");
}
  1. 使用ViewModel:創建一個ViewModel對象來保存數據,在Fragment重新創建時獲取ViewModel對象。例如:
public class MyViewModel extends ViewModel {
    private MutableLiveData<String> data = new MutableLiveData<>();

    public LiveData<String> getData() {
        return data;
    }

    public void setData(String value) {
        data.setValue(value);
    }
}

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    MyViewModel viewModel = ViewModelProviders.of(this).get(MyViewModel.class);
    viewModel.getData().observe(this, new Observer<String>() {
        @Override
        public void onChanged(String value) {
            // Update UI with the new value
        }
    });
}

這些方法可以根據具體的需求選擇使用,以實現Fragment狀態的保存和恢復。

0
广安市| 武隆县| 崇义县| 永吉县| 恩施市| 琼中| 丰都县| 安丘市| 浦北县| 遂溪县| 东宁县| 和田县| 云和县| 敦煌市| 芮城县| 襄城县| 三台县| 徐水县| 徐州市| 修武县| 拉萨市| 凤山市| 鲜城| 土默特左旗| 万全县| 德阳市| 四会市| 庆云县| 泉州市| 大同县| 北票市| 海盐县| 怀来县| 金川县| 大庆市| 离岛区| 泽州县| 剑河县| 邳州市| 安塞县| 鄂托克前旗|