亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

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
钟祥市| 梁山县| 阿城市| 丹巴县| 山阳县| 梁平县| 宁阳县| 时尚| 三穗县| 抚松县| 宜宾县| 新丰县| 崇明县| 简阳市| 甘孜| 滨州市| 兴文县| 西藏| 射阳县| 色达县| 桐梓县| 道孚县| 巴中市| 云阳县| 进贤县| 凤台县| 通河县| 望都县| 太保市| 白朗县| 宜兴市| 呼伦贝尔市| 拉孜县| 偃师市| 清原| 苍梧县| 仙游县| 民勤县| 湖南省| 禄劝| 滁州市|