если и еще команда в настройках Android - PullRequest
3 голосов
/ 04 января 2011

Я уже пару недель пытаюсь добавить некоторые настройки в свое приложение.

Мне действительно нужна только функция флажка.

Я пытаюсь контролировать видимостьодин переключатель с проверкой флажка

Вот мои 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 (new OnCheckedChangeListener () {

есть идеи, почему? Я думаю, что это связано с тем, как я назвал строку выше, но использую ли я final, boolean или void itпо-прежнему генерирует ошибки

это сообщение об ошибке

Тип new CompoundButton.OnCheckedChangeListener () {} должен реализовывать унаследованный абстрактный метод CompoundButton.OnCheckedChangeListener.onCheckedChanged (CompoundButton, boolean) * 10181019 * Итак, я думаю, что я спрашиваю:

Правильно ли я выполняю настройки и как правильно выполнить команду If else ??

Ответы [ 2 ]

2 голосов
/ 04 января 2011

Я думаю, что подпись метода, который вы пытаетесь переопределить, неверна.Замените это:

public boolean OnCheckedChange (CompoundButton compoundButton) {

следующим:

@Override
public void onCheckedChanged(CompoundButton compoundButton, boolean isChecked) {

EDIT Хорошо, вот попытка исправить весь класс.Сделайте резервную копию вашего текущего кода, затем выберите весь код ниже и скопируйте его.Выберите весь код в своем классе и замените его следующим:

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

0 голосов
/ 04 января 2011

Используйте встроенный класс CheckBoxPreference и ознакомьтесь с этой статьей о настройке и использовании настроек:

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

Используя ваш код выше, в нем есть несколько ошибок (кроме уже идентифицированных), а именно, в вашем операторе if / else отсутствует 'else', а фигурные скобки не совпадают (при условии, что код вставляется еще не облажался) - похоже, компилируется нормально:

import android.app.Activity;

import android.content.SharedPreferences; импорт android.os.Bundle; import android.preference.CheckBoxPreference; импорт android.preference.Preference; import android.preference.PreferenceActivity; import android.preference.PreferenceManager; import android.preference.Preference.OnPreferenceClickListener; import android.preference.Preference.OnPreferenceChangeListener; импорт android.widget.Button; import android.widget.CheckBox; import android.widget.CompoundButton; импорт android.widget.RadioButton; импорт android.widget.Toast; import android.widget.CompoundButton.OnCheckedChangeListener; импорт android.view.View;

открытый класс Preferences расширяет PreferenceActivity { частное 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);

              }                                    
         }
      });
  } 

}

...