【问题标题】:Android ViewPager - Save WebView inputAndroid ViewPager - 保存 WebView 输入
【发布时间】:2014-01-02 06:34:36
【问题描述】:

我是 Android ViewPager 的新手。

我在每个页面上都有一个带有 WebViews 的 ViewPager - 基本上是网页的幻灯片。有些页面有文本输入。我想将页面的用户输入保存到 Java 对象中,以便将它们发送到服务器,并在稍后重新打开 ViewPager 时恢复它们。

知道该怎么做吗?最初我认为我应该在更改页面时保存(OnPageChangeListener),但我不知道如何拉出最后一页的 Fragment,所以我可以从 WebView 中获取输入字段进行保存。我需要进行保存,以便 ViewPager 始终显示正确的数据,例如在页面之间滑动、切换方向、暂停/恢复应用等时。

提前非常感谢。

【问题讨论】:

  • 先在这里发布您的代码。

标签: android android-viewpager android-webview viewpagerindicator


【解决方案1】:

可以这样下去

  1. 使用 javascript bridge 捕获用户输入,有一个数据库来存储所有用户输入。
  2. 然后在发送到服务器或恢复网页时使用相同的用户输入。

【讨论】:

  • 这两点我都明白。我的问题是如何在更改页面时实际访问 Fragment 的 WebView,这样我就可以首先保存用户输入。 onPageSelected 不允许我访问上一个 Fragment,我需要获取 WebView。这有意义吗?
  • 好的..你可以解决它,有一些 webview 的 id 并在你在数据库中存储值时传递它。
  • 这行得通吗?我得到它的方式是有一个托管 ViewPager 的 Activity,它又包含 Fragments,每个片段都有一个 WebView。 Adapter 的 getItem() 返回 Fragment,带有一个新的 WebView。现在,我认为只要方向发生变化,就会重新创建 Activity,因此会重新创建其中的所有内容?抱歉,但我对这在实践中的工作方式感到困惑。再次感谢。
  • 那么你的问题是活动重新创建,你可以通过在 android 清单文件中为活动标签设置 onconfigchange 属性来处理。像这样 android:configChanges="orientation|keyboardHidden"
  • 或者有没有办法遍历ViewPager中的所有片段?
【解决方案2】:

好的,我想我已经想通了:

我现在不是在页面之间滑动时保存,而是将数据保存在 Fragment 本身的 onPause() 中,即每个页面的 Fragment。 Fragment 的 onPause() 在以下情况下被调用:

  • Fragment 即将被销毁(退出 ViewPager 时,或 Fragment 超出 ViewPager 的缓存范围时)
  • 当应用程序本身暂停时,例如切换到另一个应用程序,或者当它被杀死时
  • 打开子 Activity 时
  • 当设备的方向改变时,导致父 Activity 被重新创建

这似乎是保存 Fragment 数据的最可靠方法。

对此有什么建议或建议吗?

再次感谢。

【讨论】:

    猜你喜欢
    • 2017-02-28
    • 1970-01-01
    • 1970-01-01
    • 2012-06-12
    • 2012-05-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多