1

我正在使用带有 webview 的活动,并在设备旋转时防止它刷新,我android:configChanges="orientation|screenSize"在 AndroidManifest.xml 中有。问题是每当设备旋转时,我对状态栏所做的更改都会消失。有谁知道如何在旋转时保持 webview 不刷新并保持我在状态栏中所做的更改?

这是我用来更改状态栏的方法

public static void changeActionBarFont(Activity activity) {
        Typeface slab = Typeface.createFromAsset(activity.getAssets(),
                "RobotoSlab.ttf");
        int actionBarTitle = Resources.getSystem().getIdentifier(
                "action_bar_title", "id", "android");
        int actionBarSubTitle = Resources.getSystem().getIdentifier(
                "action_bar_subtitle", "id", "android");
        if (0 == actionBarTitle & 0 == actionBarSubTitle) {
            actionBarTitle = com.actionbarsherlock.R.id.abs__action_bar_title;
            actionBarSubTitle = com.actionbarsherlock.R.id.abs__action_bar_subtitle;
        }
        TextView title = (TextView) activity.getWindow().findViewById(
                actionBarTitle);
        TextView subtitle = (TextView) activity.getWindow().findViewById(
                actionBarSubTitle);
        if (title != null | subtitle != null) {
            title.setTypeface(slab);
            subtitle.setTypeface(slab);
            subtitle.setTextColor(Color.parseColor("#FFFFFFFF"));
        }
    }

编辑:configChanges从 中删除AndroidManifest确实可以解决 的问题ActionBar,但我需要它们来防止webview在设备旋转时重新加载。任何人都对我如何保留它们有任何想法?

4

1 回答 1

0

这可能不是您现在想听到的,但最好尝试以新方向重新创建布局,而不是仅仅阻止方向更改。

在您的 onCreate 检查是否有保存的实例(由于方向更改),例如

if (savedInstanceState == null) {
  //recreate the current state
}
else {
  //normal start
}

您可能需要保留一些值(在 Shared Prefs 或 onSavedInstanceState 中)。

这种方法比锁定方向更困难,但从长远来看它是一种更好的方法,并且非常值得投资(额外的努力)。

于 2013-07-29T20:40:57.920 回答