中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

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
福鼎市| 永新县| 金塔县| 乐清市| 陵川县| 隆化县| 乐业县| 罗山县| 页游| 常德市| 乌海市| 韶山市| 呼玛县| 威远县| 乌鲁木齐市| 北辰区| 康平县| 南部县| 湾仔区| 和林格尔县| 雷波县| 共和县| 同仁县| 昭平县| 乐至县| 屏山县| 易门县| 江永县| 阜阳市| 浑源县| 特克斯县| 隆子县| 蕉岭县| 莲花县| 霸州市| 彝良县| 吴江市| 晴隆县| 平度市| 和硕县| 阳东县|