保持ActionBar不会还原更改

时间:2013-07-23 21:21:11

标签: android android-actionbar orientation android-manifest

我正在使用带有webview的活动,并且无论何时旋转设备都不会刷新它,我在AndroidManifest.xml中有android:configChanges="orientation|screenSize"。问题是,无论何时旋转设备,我对状态栏所做的更改都会消失。有没有人知道如何在旋转时保持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每当设备旋转时重新加载。任何人都有任何想法,我怎么能保持他们两个?

1 个答案:

答案 0 :(得分:0)

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

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

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

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

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