2013-09-18 3 views
0

Я установил 4 RadioButton в действии.OnCheckedChangeListener Не отвечает правильно

У меня проблема, когда, когда я нажимаю на «ВСЕ» RadioButton, он показывает тост, соответствующий RadioButton «КАТЕГОРИИ». Кроме того, когда я нажимаю на RadioButton «КАТЕГОРИИ», он отображает тост, соответствующий «О программе» RadioButton. Затем, когда я нажимаю на «О НАС» RadioButton, ничего не отображается.

Я знаю, что это связано с тем, что некоторые вещи не направлены правильно, но, похоже, не могут понять, что это такое.

FYI: Позже я буду открытие мероприятия с учетом этих Radiobuttons, поэтому я только что сделал have't GetText и используется только 1 OnCheckedChangeListener

Любая помощь будет оценен по достоинству!

MainActivity:

public class MainActivity extends Activity { 

GridView list; 
LazyAdapter adapter; 

@Override 
public void onCreate(Bundle savedInstanceState) { 

    this.requestWindowFeature(Window.FEATURE_NO_TITLE); 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.main); 

    list = (GridView) findViewById(R.id.list); 
    adapter = new LazyAdapter(this, mStrings); 
    list.setAdapter(adapter); 

    RadioButton radioButton; 
    radioButton = (RadioButton) findViewById(R.id.btnAll); 

    radioButton.setOnCheckedChangeListener(btnAllOnCheckedChangeListener); 
    radioButton = (RadioButton) findViewById(R.id.btnAll); 

    radioButton 
      .setOnCheckedChangeListener(btnCategoriesOnCheckedChangeListener); 
    radioButton = (RadioButton) findViewById(R.id.btnCategories); 

    radioButton 
      .setOnCheckedChangeListener(btnPopularOnCheckedChangeListener); 
    radioButton = (RadioButton) findViewById(R.id.btnPopular); 

    radioButton.setOnCheckedChangeListener(btnAboutOnCheckedChangeListener); 
    radioButton = (RadioButton) findViewById(R.id.btnAbout); 
} 

private CompoundButton.OnCheckedChangeListener btnAllOnCheckedChangeListener = new CompoundButton.OnCheckedChangeListener() { 
    public void onCheckedChanged(CompoundButton buttonView, 
      boolean isChecked) { 
     if (isChecked) { 

      Toast.makeText(getApplicationContext(), "Opened ALL tab", Toast.LENGTH_LONG).show(); 
     } 
    } 

}; 

private CompoundButton.OnCheckedChangeListener btnCategoriesOnCheckedChangeListener = new CompoundButton.OnCheckedChangeListener() { 
    public void onCheckedChanged(CompoundButton buttonView, 
      boolean isChecked) { 
     if (isChecked) { 

      Toast.makeText(getApplicationContext(), "Opened CATEGORIES tab", Toast.LENGTH_LONG).show(); 

     } 
    } 

}; 

private CompoundButton.OnCheckedChangeListener btnPopularOnCheckedChangeListener = new CompoundButton.OnCheckedChangeListener() { 
    public void onCheckedChanged(CompoundButton buttonView, 
      boolean isChecked) { 
     if (isChecked) { 
      Toast.makeText(getApplicationContext(), "Opened POPULAR tab", Toast.LENGTH_LONG).show(); 
     } 
    } 

}; 

private CompoundButton.OnCheckedChangeListener btnAboutOnCheckedChangeListener = new CompoundButton.OnCheckedChangeListener() { 
    public void onCheckedChanged(CompoundButton buttonView, 
      boolean isChecked) { 
     if (isChecked) { 
      Toast.makeText(getApplicationContext(), "Opened ABOUT tab", Toast.LENGTH_LONG).show(); 
     } 
    } 

}; 
+1

попробовать использовать группу радио, если и хотят выбрать только один и использовать прослушиватель в группе радио –

+0

Проверьте мой обновленный вопрос. – Jack

ответ

2
// Replace this code and try 
@Override 
    public void onCreate(Bundle savedInstanceState) { 

     this.requestWindowFeature(Window.FEATURE_NO_TITLE); 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.main); 

     list = (GridView) findViewById(R.id.list); 
     adapter = new LazyAdapter(this, mStrings); 
     list.setAdapter(adapter); 

     RadioButton btnAll = (RadioButton) findViewById(R.id.btnAll); 
     btnCategories.setOnCheckedChangeListener(btnAllOnCheckedChangeListener); 

     RadioButton btnCategories = (RadioButton) findViewById(R.id.btnCategories); 
     btnCategories.setOnCheckedChangeListener(btnCategoriesOnCheckedChangeListener); 

     RadioButton btnPopular = (RadioButton) findViewById(R.id.btnPopular); 
     btnPopular.setOnCheckedChangeListener(btnPopularOnCheckedChangeListener); 

     RadioButton btnAbout = (RadioButton) findViewById(R.id.btnAbout); 
     btnAbout.setOnCheckedChangeListener(btnAboutOnCheckedChangeListener); 
    } 
0

Вы повторяете кнопку Все радио дважды. Код должен быть:

RadioButton radioButton; 
radioButton = (RadioButton) findViewById(R.id.btnAll); 

radioButton.setOnCheckedChangeListener(btnAllOnCheckedChangeListener); 
radioButton = (RadioButton) findViewById(R.id.btnCategories); 

radioButton 
     .setOnCheckedChangeListener(btnCategoriesOnCheckedChangeListener); 
radioButton = (RadioButton) findViewById(R.id.btnPopular); 

radioButton 
     .setOnCheckedChangeListener(btnPopularOnCheckedChangeListener); 
radioButton = (RadioButton) findViewById(R.id.btnAbout); 

radioButton.setOnCheckedChangeListener(btnAboutOnCheckedChangeListener); 
0

сделать одиночный CompoundButton.OnCheckedChangeListener таким образом:

private CompoundButton.OnCheckedChangeListener btnOnCheckedChangeListener = new CompoundButton.OnCheckedChangeListener() { 
      public void onCheckedChanged(CompoundButton buttonView, 
        boolean isChecked) { 
       switch buttonView{ 
       case btn1: 
    //your logic 
    and so on 
       } 
      } 

     }; 

и применить этот приемник для всех кнопок

Смежные вопросы