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

溫馨提示×

Android fragment 如何處理配置變化

小樊
82
2024-10-14 14:42:03
欄目: 編程語言

在 Android 中,當設備的配置發生變化時(例如屏幕方向、語言改變、鍵盤可見性等),系統可能會銷毀并重新創建當前的 Fragment。為了確保 Fragment 在配置變化時能夠正確地恢復其狀態,你需要遵循以下步驟:

  1. 在 Fragment 的 onCreate 方法中,使用 setRetainInstance(true) 來保留 Fragment 實例。這將確保在配置變化時,Fragment 不會被銷毀,而是在新的實例中恢復其狀態。
@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setRetainInstance(true);
}
  1. 在 Fragment 的 onSaveInstanceState 方法中,保存 Fragment 的關鍵狀態信息。這可以確保在配置變化時,這些信息不會丟失。
@Override
public void onSaveInstanceState(Bundle outState) {
    super.onSaveInstanceState(outState);
    // 保存關鍵狀態信息,例如文本輸入框的值
    outState.putString("key", "value");
}
  1. 在 Fragment 的 onCreateViewonActivityCreated 方法中,從 Bundle savedInstanceState 中恢復之前保存的狀態信息。
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
    if (savedInstanceState != null) {
        // 恢復關鍵狀態信息
        String value = savedInstanceState.getString("key");
    }
    // 創建和返回 Fragment 的視圖
}
  1. 如果你的 Fragment 需要處理多種配置變化,例如屏幕方向改變,你可以在 AndroidManifest.xml 文件中為 Fragment 關聯一個 android:configChanges 屬性,并指定需要處理的配置變化類型。
<fragment
    android:id="@+id/my_fragment"
    android:name="com.example.MyFragment"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:configChanges="orientation|screenSize|keyboardHidden" />

這將告訴系統,當這些配置變化發生時,不要銷毀并重新創建 Fragment,而是調用 onConfigurationChanged 方法來處理這些變化。

@Override
public void onConfigurationChanged(Configuration newConfig) {
    super.onConfigurationChanged(newConfig);
    // 處理配置變化,例如調整布局方向
}

請注意,使用 android:configChanges 屬性可能會導致 Fragment 無法正確地響應系統配置變化,因此請謹慎使用。在大多數情況下,使用 setRetainInstance(true) 和保存/恢復狀態信息的方法更為可靠。

0
竹山县| 江油市| 沂南县| 乐安县| 衡东县| 左云县| 永昌县| 德保县| 门源| 泸溪县| 如皋市| 中卫市| 娄底市| 东城区| 怀化市| 清镇市| 遵化市| 阿拉善左旗| 芮城县| 南平市| 隆回县| 周口市| 景德镇市| 丰都县| 常德市| 丹江口市| 通许县| 民县| 威远县| 兖州市| 揭西县| 浦东新区| 休宁县| 胶州市| 平遥县| 西乌| 百色市| 庄河市| 临夏县| 建瓯市| 观塘区|