【问题标题】:How to prevent restarting fragment while screen rotation?如何防止屏幕旋转时重新启动片段?
【发布时间】:2017-11-06 20:46:03
【问题描述】:

我有一个在 viewPager 中使用的 webView 片段。当我旋转设备的屏幕时,webview 开始再次加载网页。旋转时片段重新启动。我不希望 webView 在加载后再次加载。如何避免在屏幕旋转时重新加载片段。

【问题讨论】:

    标签: java android android-fragments webview android-viewpager


    【解决方案1】:

    试试这样:

    setRetainInstance(true);
    

    OnDestroy() 将不再被调用,您的数据将被保留。

    【讨论】:

      【解决方案2】:

      一般有以下三种方法:

      1.正如一些答案所建议的那样,您可以区分您的活动是第一次创建并从savedInstanceState中恢复的情况。这是通过覆盖 onSaveInstanceState 并检查 onCreate 的参数来完成的。

      1. 您可以通过在清单中添加android:screenOrientation="portrait"(或"landscape")将活动锁定在一个方向。
      2. 您可以通过在标签中指定 android:configChanges="orientation|screenSize" 来告诉系统您打算自己处理屏幕更改。这样,活动将不会被重新创建,而是会收到一个回调(您可以忽略它,因为它对您没有用处)。 我个人会选择(3)。当然,如果您可以将应用程序锁定到其中一个方向,您也可以选择 (2)。

      【讨论】:

      • 先生,我理解您的第二个选项,但问题是我想为用户提供更多的灵活性。但我不明白您的第 3 步。您能否解释一下或提供一个链接教程?
      • 显然在 Honeycomb 上使用 orientation|screenSize (?) 会阻止 onCreate 并且(到目前为止)似乎没有破坏以前的 Android 版本中的任何内容。 android:configChanges="orientation|screenSize" developer.android.com/reference/android/…
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多