Fragment.onCreateView调用配置更改?

时间:2014-12-30 12:32:55

标签: android android-fragments

这里我写了一个简单的活动和片段。我更改了方向,因为它的配置更改调用,所以它再次调用 Activity.onCreate(),但为什么 Fragment.onCreateView()再次。因为我没有在配置更改调用上调用fragment子。

这是我的代码:

protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.home_container);

        log("life_cycle_activity", "onCreate");

        if(savedInstanceState != null) {

            log("life_cycle_activity", "ohh..configuration changed");
            return;
        } else {

            launchChildFragment();
        }
    }

注意:android:configChanges不适用于Settings-> Display-> FontStyle更改

任何建议如何防止Fragment调用配置更改。

2 个答案:

答案 0 :(得分:1)

您可以致电:

  

public void setRetainInstance(boolean retain)

在片段onCreate中具有真值 - 这将创建所谓的保留片段

或使用以下方法阻止活动配置更改:

  

机器人:configChanges = “取向|键盘| keyboardHidden |屏幕布置|区域| fontScale | MNC | MCC”

在清单中。

答案 1 :(得分:1)

正在重新创建片段,因为savedInstanceState参数包含有关"之前"的信息。活动中存在的碎片。检查FragmentActivityonRetainNonConfigurationInstance()方法的实现(以及onCreate()中的相应逻辑),然后您将看到此信息的存储和重新加载位置。

至于#34;字体大小"配置更改,似乎不可能(或者至少我没有找到办法)使用android:configChanges来处理它。请参阅this question

尽管如此:

  

任何建议如何防止调用Fragment.onViewCreate   配置改变。

为什么需要这样做?