在此代码中,将在启动此活动后分配共享首选项的值。我希望此代码持续监听共享首选项值的更改,并在更改活动时触发。但执行时的代码会抛出错误说空指针。
感谢瓦拉纳西
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.d_pay);
con=dpay.this;
sh=getApplicationContext().getSharedPreferences("CRUZER_PREF", MODE_PRIVATE);
getActionBar().setHomeButtonEnabled(true);
getActionBar().setDisplayHomeAsUpEnabled(true);
}
@Override
public void onResume() {
super.onResume();
autoUpdate = new Timer();
autoUpdate.schedule(new TimerTask() {
@Override
public void run() {
runOnUiThread(new Runnable() {
public void run() {
updateHTML();
}
});
}
}, 0, 40000); // updates each 40 secs
}
private void updateHTML(){
p=sh.getString("p", null);
Log.e("p", p);
// your logic here
}
@Override
public void onPause() {
autoUpdate.cancel();
super.onPause();
}
答案 0 :(得分:0)
我认为拥有一个检查首选项的计时器有点浪费。假设您可以访问所有更改SharedPreferences的代码,那么您可以创建一个围绕SharedPreferences的包装类,让我们将其称为PrefHelper
。在PrefHelper
中,您将拥有一个名为setMySpecificPref(context, your parameters here)
的方法。您需要更改该首选项的任何地方,您可以调用该方法。然后,该方法将更改首选项并启动您所需的活动。