【发布时间】:2012-12-21 08:33:59
【问题描述】:
从上周开始,我在保存的首选项方面遇到了一个奇怪的问题。
我正在开发一个与 android 兼容的电路板。
我面临的实际问题是,
我有 4 个按钮,点击按钮我正在更改按钮的背景图片
Onfirstclick -> 将按钮的背景图像更改为高亮显示 -> 第二次单击 -> 更改为正常背景图像,在第一次运行时我保持正常的背景按钮图像
但在重新启动时,尽管我正在使用共享首选项,但按钮背景图像并未保存在我的工作板上。
我有一个用于打开和关闭的电源按钮,我用它来重新启动我的开发板。
无论我有什么图像(正常/突出显示)我在 onclick 中都应该在重新启动板后获得该图像
好处是
the code is working perfectly in android mobile but not in my board
这是我的代码。
我们总是感谢任何帮助。
public class SharedprefsActivity extends Activity {
protected static final String TAG = "HvacActivity";
/** Called when the activity is first created. */
private Button seatdirnbtn;
private SharedPreferences prefs;
private String prefName = "MyPref";
private SharedPreferences.Editor editor;
private boolean isclick;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
seatdirnbtn = (Button) findViewById(R.id.seatdirnbtn);
seatdirnbtn.setOnClickListener(listner1);
}
public void onResume() {
super.onResume();
getPrefAndButtonState();
}
public void onPause() {
super.onPause();
setPrefAndButtonState();
}
@Override
public void onRestart() {
super.onRestart();
getPrefAndButtonState();
}
@Override
public void onStop() {
super.onStop();
setPrefAndButtonState();
}
public void getPrefAndButtonState(){
prefs = this.getSharedPreferences(prefName, MODE_PRIVATE);
isclick = prefs.getBoolean("prefName", false);
System.out.println("bool? " + isclick);
if (isclick) {
seatdirnbtn.setBackgroundResource(R.drawable.icon4hlt);
} else if (!isclick) {
seatdirnbtn.setBackgroundResource(R.drawable.icon4);
}
}
public void setPrefAndButtonState(){
editor = prefs.edit();
editor.putBoolean("prefName", isclick);
editor.commit();
getPrefAndButtonState();
}
private View.OnClickListener listner1 = new View.OnClickListener() {
public void onClick(View v) {
if (isclick) {
isclick = false;
setPrefAndButtonState();
} else if (!isclick) {
isclick = true;
setPrefAndButtonState();
}
}
};
}
【问题讨论】:
-
我无法解决您的问题,但我可以告诉您,您可以删除您的
onStop()和onRestart()。onPause()总是在onStop()之前被调用,并且您不必设置两次首选项。onResume()总是在onRestart()之后被调用,所以你也得到了两次首选项。编辑:androidjavadoc.com/1.0_r1_src/android/app/doc-files/…(只是 Google 'android 活动生命周期') -
谢谢,但我不明白它如何在我的手机上完美运行。
-
我只是说这两种方法已经过时,可以删除而不会产生任何后果。由于这并不能回答您的问题,因此我没有将其发布为答案。因为不是。
标签: android button save sharedpreferences