我正在使用带有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
每当设备旋转时重新加载。任何人都有任何想法,我怎么能保持他们两个?
答案 0 :(得分:0)
这可能不是您现在想要听到的内容,但最好尝试在新方向中重新创建布局,而不是仅仅阻止方向更改。
在你的onCreate中检查是否有保存的实例(由于方向改变),例如
if (savedInstanceState == null) {
//recreate the current state
}
else {
//normal start
}
您可能需要保留一些值(在Shared Prefs或onSavedInstanceState中)。
这种方法比锁定方向更困难,但从长远来看这是一种更好的方法,非常值得投资(额外的努力)。