【问题标题】:how can I retain text-selected status when screen rotation in android在android中旋转屏幕时如何保留文本选择状态
【发布时间】:2013-08-31 07:03:06
【问题描述】:

如何在android中屏幕旋转时保留文本选择的查找状态

在我的Application中,我使用Webview显示网站,然后长按网站内容,创建系统默认的Actionmode,“选择”、“复制”、“分享”、“查找”菜单显示,然后我点击“查找”项 所选单词可以在查找文本编辑器中看到。 但是当我旋转屏幕时,所有的菜单和查找文本编辑器都被破坏了,当我开始打开网站时又回到了初始状态。 我的问题是屏幕旋转后,我可以做些什么来保持查找状态?

PS:我知道当屏幕旋转时,Activity被销毁并重新创建,所以旋转前的状态丢失了。但是我不知道应该在 onSaveIntanceState() 方法中保存什么对象。 我也不想在 AndroidManifest.xml 文件中使用 android:configChanges。

我确实喜欢下面

protected void onSaveInstanceState(Bundle outState) {
    webView.saveState(outState);
}

当然,在 webview 重新膨胀之后,在你的 onCreate 中恢复它:

public void onCreate(final Bundle savedInstanceState) {
   super.onCreate(savedInstanceState);
   setContentView(R.layout.blah);
   if (savedInstanceState != null)
      ((WebView)findViewById(R.id.webview)).restoreState(savedInstanceState);
}

但是不行,text-selected-find状态还是丢失了。

我想如果我能得到系统默认的ActionMode实例,那么我可以保存它, 但我找不到任何方法来获取该实例。

【问题讨论】:

    标签: android browser webview find


    【解决方案1】:

    尝试this 解决方案。我想你会很好地了解如何使用onSaveInstanceState() 方法。

    编辑: 如下所示

    @Override
    public void onSaveInstanceState(Bundle outState) {
        super.onSaveInstanceState(outState);
    }
    
    @Override
    protected void onRestoreInstanceState(Bundle savedInstanceState) {
    // TODO Auto-generated method stub
    super.onRestoreInstanceState(savedInstanceState);
    }
    

    您需要将这两个方法放在您的类中并覆盖它们。另外,你没有放super构造函数,这很重要。

    【讨论】:

    • 但是在onSaveInstanceState()中,我应该保存什么对象,你能解释一下吗
    • 你可以从onCreate(Bundle savedInstanceState)保存Bundle对象。
    • 检查我的答案的编辑部分,并尝试实现Parcelable 类,如我共享的链接所示。
    猜你喜欢
    • 1970-01-01
    • 2012-12-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-04-22
    • 1970-01-01
    • 1970-01-01
    • 2016-01-04
    相关资源
    最近更新 更多