首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >android首选项中的if和else命令

android首选项中的if和else命令
EN

Stack Overflow用户
提问于 2011-01-04 20:48:04
回答 2查看 5.2K关注 0票数 3

几个星期以来,我一直在尝试为我的应用程序添加一些首选项

我真的只需要复选框功能。

我试图通过选中复选框来控制单个单选按钮的可见性

这是我的Preferences.java

代码语言:javascript
复制
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命令??

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-01-04 22:45:36

我认为您试图重写的方法的签名不正确。替换为:

代码语言:javascript
复制
public boolean OnCheckedChange (CompoundButton compoundButton) {

有了这个:

代码语言:javascript
复制
@Override
public void onCheckedChanged(CompoundButton compoundButton, boolean isChecked) {

编辑好的,这是一个修复整个类的尝试。备份您当前的代码,然后选择下面的所有代码并复制它。选择类中的所有代码,并将其替换为:

代码语言:javascript
复制
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中编译时没有任何问题。

票数 2
EN

Stack Overflow用户

发布于 2011-01-04 21:08:45

使用内置的CheckBoxPreference类,查看这篇关于设置和使用首选项的文章:

http://www.kaloer.com/android-preferences

使用上面的代码,其中有几个错误(除了那些已经识别的错误),即if/else语句缺少'else‘,大括号看起来不匹配(假设粘贴代码没有搞砸它)-这看起来编译正常:

代码语言:javascript
复制
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;

代码语言:javascript
复制
@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);

              }                                    
         }
      });
  } 

}

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4593746

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档