Android SharedReferences切换按钮未保存
*最近几天我一直在为这个问题发狂。我试图使用SharedReferences允许我的用户通过ToggleButton保存游戏中音频的选定选项,但每次我运行我的应用程序并点击“完成”时按钮返回到主活动屏幕,然后再次单击设置,它永远不会保存。我通过谷歌搜索、我的书和这个网站对此做了一些研究,但通过许多方法,我尝试过的结果都是一样的。 我是android开发新手,更不用说应用程序开发了,因为我在过去的几周里了解到这是我的一个主要障碍,如果这个问题已经在这个网站上讨论过,我很抱歉,但我真的不知道我做错了什么。 这是我的设置活动中的代码Android SharedReferences切换按钮未保存,android,eclipse,sharedpreferences,Android,Eclipse,Sharedpreferences,*最近几天我一直在为这个问题发狂。我试图使用SharedReferences允许我的用户通过ToggleButton保存游戏中音频的选定选项,但每次我运行我的应用程序并点击“完成”时按钮返回到主活动屏幕,然后再次单击设置,它永远不会保存。我通过谷歌搜索、我的书和这个网站对此做了一些研究,但通过许多方法,我尝试过的结果都是一样的。 我是android开发新手,更不用说应用程序开发了,因为我在过去的几周里了解到这是我的一个主要障碍,如果这个问题已经在这个网站上讨论过,我很抱歉,但我真的不知道我做错了
package com.fullfrontalgames.numberfighter;
import android.app.Activity;
import android.content.Context;
import android.content.Intent;
import android.content.SharedPreferences;
import android.os.Bundle;
import android.preference.Preference;
import android.preference.PreferenceManager;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.CompoundButton;
import android.widget.ToggleButton;
public class Settings extends Activity {
@Override
public void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(R.layout.settings);
Button Notifications = (Button) findViewById(R.id.Notifications);
Button Done = (Button) findViewById(R.id.done);
Button AccountSettings = (Button) findViewById(R.id.AccountSettings);
final ToggleButton AT = (ToggleButton) findViewById(R.id.AudioToggle);
AT.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
{
if ((AT.isChecked()))
{
SharedPreferences appPrefs =
getSharedPreferences("com.fullfrontalgames.numberfighter.Settings_preferences",
MODE_PRIVATE);
SharedPreferences.Editor editor = appPrefs.edit();
editor.putBoolean("atpref", AT.isChecked()); //value to store
editor.commit();
}
}
}
});
SharedPreferences appPrefs =
getSharedPreferences("com.fullfrontalgames.numberfighter.Settings_preferences",
MODE_PRIVATE);
boolean atpref = appPrefs.getBoolean("atpref", true); //default is true
AT.setChecked(atpref);
Done.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
Intent Intent = new Intent(Settings.this,activity_main.class);
Intent.setFlags(android.content.Intent.FLAG_ACTIVITY_CLEAR_TOP);
startActivity(Intent);
}
});
Notifications.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
startActivity(new Intent("com.fullfrontalgames.numberfighter.Notifications"));
}
});
AccountSettings.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
startActivity(new Intent("com.fullfrontalgames.numberfighter.AccountSettings"));
}
});
}
public void onToggleClicked(View view) {
// Is the toggle on?
boolean on = ((ToggleButton) view).isChecked();
if (on) {
view.setSoundEffectsEnabled(true);
} else {
view.setSoundEffectsEnabled(false);
}
}
}
如果您试图在ToggleButton为
false
时保存它的状态,只需删除OnClickListener中的If语句:
我想您可以将默认值从true更改为false。或者你也可以用@Sam的答案。非常感谢你,这对我很有用!我从你的回答中学到了很多!
if ((AT.isChecked()))