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

时间:2013-08-31 07:03:07

标签: android browser webview find

如何在android

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

在我的应用程序中,我使用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实例,那么我可以保存它, 但我找不到任何办法来获得那个实例。

1 个答案:

答案 0 :(得分:0)

尝试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构造函数,这很重要。

相关问题