几个星期以来,我一直在尝试为我的应用程序添加一些首选项
我真的只需要复选框功能。
我试图通过选中复选框来控制单个单选按钮的可见性
这是我的Preferences.java
import android.app.Activity;
import android.content.SharedPreferences;
import android.os.Bundle;
import android.preference.CheckBoxPreference;
import android.preference.Preference;
import android.preference.PreferenceActivity;
import android.preference.PreferenceManager;
import android.preference.Preference.OnPreferenceClickListener;
import android.preference.Preference.OnPreferenceChangeListener;
import android.widget.Button;
import android.widget.CheckBox;
import android.widget.CompoundButton;
import android.widget.RadioButton;
import android.widget.Toast;
import android.widget.CompoundButton.OnCheckedChangeListener;
import android.view.View;
public class Preferences extends PreferenceActivity {
private RadioButton btn01;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
addPreferencesFromResource(R.xml.prefs);
btn01 = (RadioButton)findViewById(R.id.RadioButton01);
Preference customPref = (Preference) findPreference("customPref");
customPref.setOnPreferenceClickListener(new OnPreferenceClickListener(){
public boolean onPreferenceClick(Preference preference) {
Toast.makeText(getBaseContext(),
"The Custom Preference Has Been Clicked",
Toast.LENGTH_LONG).show();
SharedPreferences customSharedPreference = getSharedPreferences(
"myCutomSharedPrefs", Activity.MODE_PRIVATE);
SharedPreferences.Editor editor = customSharedPreference
.edit();
editor.putString("myCustomPref",
"The preference has been clicked");
editor.commit();
return true;}
public void CheckBox() {
final CheckBox ThisCheckBox = (CheckBox) findViewById (R.id.checkboxPref);{
ThisCheckBox.setOnCheckedChangeListener(new OnCheckedChangeListener(){
public boolean OnCheckedChange (CompoundButton compoundButton) {
if (ThisCheckBox.isChecked()){
{
btn01.setVisibility(0);
}{
btn01.setVisibility(2);
}}
}
;
});
};}});}}无论如何,我非常确定这是完全错误的,我在这一行得到了一个错误
新建(ThisCheckBox.setOnCheckedChangeListener OnCheckedChangeListener(){
知道为什么吗?我认为这与我调用上述代码行的方式有关,但无论我使用final、boolean还是void,它都会生成错误
这是错误消息
类型CompoundButton.OnCheckedChangeListener.onCheckedChanged(CompoundButton,CompoundButton.OnCheckedChangeListener(){}必须实现继承的抽象方法new )
所以我想我要问的是
我是否正确执行了首选项,以及如何正确执行If else命令??
发布于 2011-01-04 22:45:36
我认为您试图重写的方法的签名不正确。替换为:
public boolean OnCheckedChange (CompoundButton compoundButton) {有了这个:
@Override
public void onCheckedChanged(CompoundButton compoundButton, boolean isChecked) {编辑好的,这是一个修复整个类的尝试。备份您当前的代码,然后选择下面的所有代码并复制它。选择类中的所有代码,并将其替换为:
import android.app.Activity;
import android.content.SharedPreferences;
import android.os.Bundle;
import android.preference.Preference;
import android.preference.PreferenceActivity;
import android.preference.Preference.OnPreferenceClickListener;
import android.widget.CheckBox;
import android.widget.CompoundButton;
import android.widget.RadioButton;
import android.widget.Toast;
import android.widget.CompoundButton.OnCheckedChangeListener;
public class Preferences extends PreferenceActivity {
private RadioButton btn01;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
addPreferencesFromResource(R.xml.prefs);
btn01 = (RadioButton)findViewById(R.id.RadioButton01);
Preference customPref = (Preference) findPreference("customPref");
customPref.setOnPreferenceClickListener(new OnPreferenceClickListener(){
public boolean onPreferenceClick(Preference preference) {
Toast.makeText(getBaseContext(),"The Custom Preference Has Been Clicked",Toast.LENGTH_LONG).show();
SharedPreferences customSharedPreference = getSharedPreferences("myCutomSharedPrefs", Activity.MODE_PRIVATE);
SharedPreferences.Editor editor = customSharedPreference.edit();
editor.putString("myCustomPref","The preference has been clicked");
editor.commit();
return true;
}
public void CheckBox() {
final CheckBox ThisCheckBox = (CheckBox) findViewById (R.id.checkboxPref);
ThisCheckBox.setOnCheckedChangeListener(new OnCheckedChangeListener(){
@Override
public void onCheckedChanged(CompoundButton compoundButton,boolean test) {
if (ThisCheckBox.isChecked()){
btn01.setVisibility(0);
} else {
btn01.setVisibility(2);
}
}
});
};
});
}
}上面的代码在eclipse中编译时没有任何问题。
发布于 2011-01-04 21:08:45
使用内置的CheckBoxPreference类,查看这篇关于设置和使用首选项的文章:
http://www.kaloer.com/android-preferences
使用上面的代码,其中有几个错误(除了那些已经识别的错误),即if/else语句缺少'else‘,大括号看起来不匹配(假设粘贴代码没有搞砸它)-这看起来编译正常:
import android.app.Activity;import android.preference.Preference.OnPreferenceClickListener;import android.preference.Preference.OnPreferenceChangeListener;import android.widget.Button;import android.widget.CheckBox;import android.widget.CompoundButton;import android.widget.RadioButton;import android.widget.Toast;import android.preference.Preference;import android.preference.PreferenceActivity;import android.preference.PreferenceManager;import android.widget.CompoundButton.OnCheckedChangeListener;import android.widget.CheckBox;import android.widget.CompoundButton;import android.widget.RadioButton;import android.widget.Toast;import android.preference.Preference;import android.preference.PreferenceActivity;import android.preference.PreferenceManager;import android.widget.CompoundButton.OnCheckedChangeListener;import android.widget.CheckBox;import android.widget.CompoundButton;import android.widget.RadioButton;import android.widget.Toast;import import android.view.View;
公共类首选项扩展了PreferenceActivity { private RadioButton btn01;
@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
addPreferencesFromResource(R.xml.prefs);
btn01 = (RadioButton)findViewById(R.id.RadioButton01);
Preference customPref = (Preference) findPreference("customPref");
customPref.setOnPreferenceChangeListener(new OnPreferenceChangeListener()
{
@Override
public boolean onPreferenceChange(Preference preference, Object object)
{
Toast.makeText(getBaseContext(), "The Custom Preference Has Been Clicked", Toast.LENGTH_LONG).show();
SharedPreferences customSharedPreference = getSharedPreferences("myCutomSharedPrefs", Activity.MODE_PRIVATE);
SharedPreferences.Editor editor = customSharedPreference.edit();
editor.putString("myCustomPref", "The preference has been clicked");
editor.commit();
return true;
}
});
}
public void CheckBox()
{
final CheckBox ThisCheckBox = (CheckBox) findViewById (R.id.checkboxPref);
ThisCheckBox.setOnCheckedChangeListener(new OnCheckedChangeListener()
{
//@Override
public void onCheckedChanged (CompoundButton compoundButton, boolean isChecked)
{
if (ThisCheckBox.isChecked())
{
btn01.setVisibility(0);
}
else
{
btn01.setVisibility(2);
}
}
});
} }
https://stackoverflow.com/questions/4593746
复制相似问题