2016-05-10 4 views
0

Я пытаюсь сделать прослушиватель для RadioGroup. Я не знаю, почему, но слушатель никогда не звонит, когда я проверяю кого-либо из переключателей. Я хочу сделать простое меню, чтобы выбрать язык. Спасибо заранее!Android-RadioGroup setOnCheckedChangeListener() не работает

public class Language extends AppCompatActivity { 
private static final String TAG = Menu.class.getSimpleName(); 

private RadioButton englishButton, portugueseButton, spanishButton; 

@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    this.setContentView(R.layout.language); 
    Toolbar myToolbar = (Toolbar) findViewById(R.id.toolbar1); 
    setSupportActionBar(myToolbar); 

    englishButton = (RadioButton) findViewById(R.id.english); 
    englishButton.setChecked(true); 
    portugueseButton = (RadioButton) findViewById(R.id.portuguese); 
    portugueseButton.setChecked(false); 
    spanishButton = (RadioButton) findViewById(R.id.spanish); 
    spanishButton.setChecked(false); 
    RadioGroup radioGroup = (RadioGroup) findViewById(R.id.radio_group); 

    radioGroup.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() { 
     public void onCheckedChanged(RadioGroup group, int checkedId) { 
      Log.d(TAG, "Get IN: setOnCheckedChangeListener"); 

      // find which radio button is selected 
      if(checkedId == R.id.english) { 
       portugueseButton.setChecked(false); 
       spanishButton.setChecked(false); 
       Toast.makeText(getApplicationContext(), "choice: English", Toast.LENGTH_SHORT).show(); 
      } else if(checkedId == R.id.portuguese) { 
       englishButton.setChecked(false); 
       spanishButton.setChecked(false); 
       Toast.makeText(getApplicationContext(), "choice: Portuguese", Toast.LENGTH_SHORT).show(); 
      } else if(checkedId == R.id.spanish){ 
       englishButton.setChecked(false); 
       portugueseButton.setChecked(false); 
       Toast.makeText(getApplicationContext(), "choice: Spanish", Toast.LENGTH_SHORT).show(); 
      } 
     } 
    }); 
} 
} 

Это мой XML-файл

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:app="http://schemas.android.com/apk/res-auto" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:background="#000000" 
    android:orientation="vertical"> 

    <android.support.design.widget.AppBarLayout 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:theme="@style/AppTheme.AppBarOverlay"> 

     <android.support.v7.widget.Toolbar 
      android:id="@+id/toolbar1" 
      android:layout_width="match_parent" 
      android:layout_height="85dp" 
      android:background="#670000" 
      app:popupTheme="@style/AppTheme.PopupOverlay"> 

      <TextView 
       android:id="@+id/data_label" 
       android:layout_width="fill_parent" 
       android:layout_height="wrap_content" 
       android:layout_marginStart="25dp" 
       android:padding="10dip" 
       android:text="@string/Language" 
       android:textColor="#ffffff" 
       android:textSize="25sp" 
       android:textStyle="bold"/> 


     </android.support.v7.widget.Toolbar> 

    </android.support.design.widget.AppBarLayout> 

    <RadioGroup 
     android:id="@+id/radio_group" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:orientation="vertical"> 
     <LinearLayout android:layout_width="match_parent" 
      android:layout_height="wrap_content" 
      android:layout_marginTop="40dp" 
      android:orientation="horizontal" 
      android:paddingLeft="30dp" 
      android:paddingRight="30dp"> 
     <RadioButton android:id="@+id/english" 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" 
      android:background="#670000" 
      android:text="@string/English" 
      android:textSize="40dp"/> 
     </LinearLayout> 

     <LinearLayout android:layout_width="match_parent" 
      android:layout_height="wrap_content" 
      android:layout_marginTop="40dp" 
      android:orientation="horizontal" 
      android:paddingLeft="30dp" 
      android:paddingRight="30dp"> 
     <RadioButton android:id="@+id/portuguese" 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" 
      android:background="#670000" 
      android:text="@string/Portuguese" 
      android:textSize="40dp"/> 
     </LinearLayout> 
     <LinearLayout android:layout_width="match_parent" 
      android:layout_height="wrap_content" 
      android:layout_marginTop="40dp" 
      android:orientation="horizontal" 
      android:paddingLeft="30dp" 
      android:paddingRight="30dp"> 
     <RadioButton android:id="@+id/spanish" 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" 
      android:background="#670000" 
      android:text="@string/Spanish" 
      android:textSize="40dp"/> 
     </LinearLayout> 

    </RadioGroup> 

    </LinearLayout> 

ответ

1

Вам не нужно объявлять RadioButton (ы) и проверить их вручную! Это, как вы должны использовать RadioGroup и RadioButton:

В вашем XML:

<RadioGroup 
    android:id="@+id/group" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent"> 

    <RadioButton 
     android:id="@+id/A" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:text="A"/> 

    <RadioButton 
     android:id="@+id/B" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:text="B"/> 
</RadioGroup> 

В вашей деятельности:

RadioGroup group = (RadioGroup)findViewById(R.id.group); 
group.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() { 
    @Override 
    public void onCheckedChanged(RadioGroup group, int checkedId) { 
     Log.d(TAG, "changed"); 
     if(checkedId==R.id.A) 
      Log.d(TAG, "A"); 
     else if(checkedId==R.id.B) 
      Log.d(TAG, "B"); 
    } 
}); 

Если вы хотите один из ваших RadioButton быть установлен по умолчанию, просто добавить в XML:

android:checked="true" 

Или в вашей деятельности:

group.check(R.id.A); 
+0

Thanks A.Omar! Я сделал то, что вы сказали, но я все еще не могу войти в слушателя. Это моя проблема! –

+0

Добро пожаловать! Странно, действительно ... Код выше всего, что у вас есть? –

+0

Я добавляю свой XML-файл в сообщение. Может быть, проблема исходит отсюда –

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