3

如何在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);
}

但它不起作用,文本选择查找状态仍然丢失。

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

4

1 回答 1

0

试试这个解决方案。我想你会很好地了解如何使用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构造函数,这很重要。

于 2013-08-31T07:14:52.670 回答