gpt4 book ai didi

java - 按下后退按钮时不加载新首选项

转载 作者:太空宇宙 更新时间:2023-11-03 12:41:52 25 4
gpt4 key购买 nike

我有一个保存两个 ListPreferences 的首选项类(如下),但是如果更改了 ListPreferences 并且按下了后退按钮,除非重新启动应用程序,否则更改不会生效。我错过了什么?一直在到处寻找,但似乎找不到合适的答案或作品。请帮忙。

    public class Preferences extends PreferenceActivity {

@Override
public void onCreate(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
addPreferencesFromResource(R.xml.preferences);
}

@Override
public void onPause() {
super.onPause();
}

@Override
public void onResume() {
super.onResume();
}
}

应用代码

 public class Quotes extends Activity implements OnClickListener {

ProgressDialog dialog;
private WebView webview;

@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);

SharedPreferences SP = PreferenceManager.getDefaultSharedPreferences(getBaseContext());

String q = SP.getString("appViewType","http://www.google.com");
String c = SP.getString("appRefreshRate","20");

webview = (WebView) findViewById(R.id.scroll);
webview.getSettings().setJavaScriptEnabled(true);
webview.setWebViewClient(new QuotesWebView(this));
webview.loadUrl(q);

ScheduledExecutorService timer = Executors.newSingleThreadScheduledExecutor();
timer.scheduleAtFixedRate(new Runnable() {

@Override
public void run() {
webview.reload();
}

}, 10, Long.parseLong(c),TimeUnit.SECONDS);

findViewById(R.id.refresh).setOnClickListener(this);
}

@Override
public void onPause(){
super.onPause();
}

@Override
public void onResume(){
super.onResume();
}

public void onClick(View v){
switch(v.getId()){
case R.id.refresh:
webview.reload();
break;
}
}


@Override
public boolean onCreateOptionsMenu(Menu menu) {
MenuInflater inflater = getMenuInflater();
inflater.inflate(R.menu.menu, menu);

MenuItem about = menu.getItem(0);
about.setIntent(new Intent(this, About.class));

MenuItem preferences = menu.getItem(1);
preferences.setIntent(new Intent(this, Preferences.class));

return true;

}

}

最佳答案

当首选项 Activity 完成时,您需要以某种方式重新加载您的首选项。我认为 Dirol 关于将它们加载到 onResume() 而不是 onCreate() 的建议非常好;你试过了吗?还是我也误解了这个问题。

在我自己的例子中,我使用 startActivityForResult() 启动了首选项 Activity ,然后在 Activity 结果回调中,我重新加载了首选项。

代码 fragment :

@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case MENU_PREFERENCES:
Intent intent = new Intent().setClass(this, CalcPreferences.class);
startActivityForResult(intent, MENU_PREFERENCES);
break;
default: return super.onOptionsItemSelected(item);
}
return true;
}

@Override
protected void onActivityResult(int req, int result, Intent data) {
switch( req ) {
case MENU_PREFERENCES:
SharedPreferences sp =
PreferenceManager.getDefaultSharedPreferences(this);
updatePreferences(sp);
break;
default:
super.onActivityResult(req, result, data);
break;
}
}

@Override
protected void updatePreferences(SharedPreferences sp) {
super.updatePreferences(sp);
keyclick = sp.getBoolean("keyclick", keyclick);
}

无论如何,这对我有用。我可能会尝试自己将我的 updatePreferences() 调用移至 onResume() 以查看它是否也有效。

关于java - 按下后退按钮时不加载新首选项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6564170/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com