我已经编写了保存切换按钮状态的代码。但它只是第一次工作。第二次不行。当我关闭它后重启我的Toggle按钮时。
prefs = PreferenceManager.getDefaultSharedPreferences(this);
edit = prefs.edit();
tb = (ToggleButton) findViewById(R.id.toggleButton1);
tb.setChecked(prefs.getBoolean("main_state", false));
tb.setOnCheckedChangeListener(this);
// Toggle Button Save States ------------------------------------------
tb.setOnClickListener(new ToggleButton.OnClickListener() {
public void onClick(View v) {
SharedPreferences sharedPreferences = PreferenceManager
.getDefaultSharedPreferences(getApplicationContext());
Editor editor = sharedPreferences.edit();
editor.putBoolean("main_state", tb.isChecked());
editor.commit();
}
});
public void onCheckedChanged(CompoundButton arg0, boolean arg1) {
if (arg1) {
edit.putBoolean("main_state", arg1);
} else {
edit.putBoolean("main_state", arg1);
}
edit.commit();
}
那么问题是什么?
答案 0 :(得分:0)
请尝试这种方式,希望这有助于您解决问题。
<强> activity_main.xml中强>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:gravity="center">
<ToggleButton
android:id="@+id/toggleButton1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"/>
</LinearLayout>
<强> MainActivity.java 强>
public class MainActivity extends Activity{
ToggleButton tb;
SharedPreferences sharedPreferences;
SharedPreferences.Editor editor;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
tb=(ToggleButton)findViewById(R.id.toggleButton1);
sharedPreferences = getSharedPreferences(getString(R.string.app_name), MODE_PRIVATE);
editor = sharedPreferences.edit();
tb.setChecked(sharedPreferences.getBoolean("main_state",false));
tb.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
editor.putBoolean("main_state",isChecked);
editor.commit();
}
});
}
}