我有一个名为 MyActivity 的活动。MyActivity 使用 WebView 来显示网页。
我还有一个如下所示的选项活动。O 也有/res/xml/options.xml
当用户更改选项中的某些内容时,我运行MyUtility.setOptionsChanged()
方法。
我的问题是当用户更改首选项 XML 中的某些内容时。当用户按下后退按钮时,我需要用发布数据重新加载当前的 webview URL 吗?
你能检查下面的代码,我应该把那个逻辑放在哪里?我应该添加到 MyOptionsActivity 的 onKeyDown 方法还是?
public class MyActivity extends Activity {
@Override
public void onCreate(Bundle savedInstanceState) {
mContext = getApplicationContext();
super.onCreate(savedInstanceState);
setContentView(R.layout.myweb);
mWebView = (WebView) findViewById(R.id.webview);
mWebView.setWebViewClient(new myWebViewClient());
String postData = MyUtility.getOptionsDataForPOSTURL(mContext);
mWebView.postUrl("http://example.com", EncodingUtils.getBytes(postData, "BASE64"));
}
public class myWebViewClient extends WebViewClient {
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
String postData = MyUtility.getOptionsDataForPOSTURL(mContext);
view.postUrl(url, EncodingUtils.getBytes(postData, "BASE64"));
}
}
public boolean onKeyDown(int keyCode, KeyEvent event) {
if (keyCode == KeyEvent.KEYCODE_BACK) {
if(mWebView.canGoBack()) {
mWebView.goBack();
} else {
super.onBackPressed();
}
return true;
}
return super.onKeyDown(keyCode, event);
}
}
public class MyOptionsActivity extends PreferenceActivity
implements SharedPreferences.OnSharedPreferenceChangeListener {
Context mContext;
@Override
public void onCreate(Bundle savedInstanceState) {
mContext = getApplicationContext();
super.onCreate(savedInstanceState);
getPreferenceManager().setSharedPreferencesName("myoptions");
addPreferencesFromResource(R.xml.options);
}
@Override
public void onResume() {
super.onResume();
getPreferenceScreen().getSharedPreferences().registerOnSharedPreferenceChangeListener(this);
}
@Override
public void onPause() {
super.onPause();
getPreferenceScreen().getSharedPreferences().unregisterOnSharedPreferenceChangeListener(this);
}
@Override
public void onSharedPreferenceChanged(SharedPreferences sharedPreferences, String key) {
MyUtility.setOptionsChanged(mContext,true);
}
}
public class MyUtility {
public static void setOptionsChanged(Context pContext, Boolean pOptionsChanged) {
SharedPreferences prefs = pContext.getSharedPreferences("general", 0);
SharedPreferences.Editor editor = prefs.edit();
editor.putBoolean("optionsChanged", pOptionsChanged);
editor.commit();
}
}