2015-01-04 2 views
0

У меня есть три радиокнопки внутри одной радиогруппы. В основном я отключил все переключатели, удалив выбранную строку из xml-файла. Теперь, когда пользователь выбирает любую кнопку, он работает только один раз, когда он снова переходит в окно выбора переключателя, которое потеряло все до состояния выбора. Я пробовал столько заявлений, но не добился успеха. Значения, которые я хочу, когда пользователь проверяет любую кнопку, он всегда будет выбран, пока пользователь не проверит какую-либо другую кнопку. Пожалуйста, помогите мне. Ниже мой код.Радио-кнопка внутри группы радиостанций не выбрана в Android

SelectedLanguage.java:

public class SelectLanguage extends ActionBarActivity { 
    public static String lang; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.select_language); 

     RadioGroup group = (RadioGroup) findViewById(R.id.radioGroup1); 
     RadioButton gujarati = (RadioButton) findViewById(R.id.radio0); 
     RadioButton hindi = (RadioButton) findViewById(R.id.radio1); 
     RadioButton english = (RadioButton) findViewById(R.id.radio2); 

     //int radio_selected = getSharedPreferences("your_prefs", Activity.MODE_PRIVATE).getInt("my_selected_radio",0); 
     //int radio_selected = getSharedPreferences("your_prefs", Activity.MODE_PRIVATE).edit().putInt("my_selected_radio",selectedValue).commit(); 

     group.setOnCheckedChangeListener(new OnCheckedChangeListener(){ 

      @Override 
      public void onCheckedChanged(RadioGroup group, int checkedId) { 
       // TODO Auto-generated method stub 
       if(checkedId == R.id.radio0) { 
        lang = "Gujarati"; 

       } else if(checkedId == R.id.radio1) { 
        lang = "Hindi"; 

       } else { 
        lang = "English"; 

       } 

      } 

     }); 

    } 

select_language.xml:

<RadioGroup 
     android:id="@+id/radioGroup1" 
     android:layout_width="fill_parent" 
     android:layout_height="wrap_content" 
     android:layout_below="@+id/textView1" 
     android:layout_marginTop="25dp" > 

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

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

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

Когда запускается другое действие (экран), предыдущее действие переходит в состояние паузы, если вы закончите(); он уничтожается, поэтому простое решение состоит в том, чтобы сохранить выбранный элемент или строку локально в SharedPreference и получить их в OnCreate() и установить выбор флажка на основе предыдущего пользовательского выбора, это самый простой способ сделать это –

ответ

1

Это полный ответ для ваших нужд, я пробовал это, и это работает отлично. Этот код сохраняет значение выбранного флажка в sharedpreferances и при необходимости возвращает сохраненное значение.

group.setOnCheckedChangeListener(new OnCheckedChangeListener() { 

    @Override 
    public void onCheckedChanged(RadioGroup group, int checkedId) { 
     // TODO Auto-generated method stub 
     pref = getApplicationContext().getSharedPreferences("MyPref", 0); 
     Editor editor1 = pref.edit(); 
     editor1.remove("key_name"); 
     if (checkedId == R.id.radio0) { 
      lang = "Gujarati"; 
      pref = getApplicationContext().getSharedPreferences("MyPref", 0); 
      Editor editor = pref.edit(); 
      editor.putString("key_name", lang); 
      editor.commit(); 
      // chk = pref.getString("key_name", null); 
      txtV.setText(lang); 

     } else if (checkedId == R.id.radio1) { 
      lang = "Hindi"; 
      pref = getApplicationContext().getSharedPreferences("MyPref", 0); 
      Editor editor = pref.edit(); 
      editor.putString("key_name", lang); 
      editor.commit(); 
      // chk = pref.getString("key_name", null); 
      txtV.setText(lang); 
     } else if (checkedId == R.id.radio2) { 
      lang = "English"; 
      pref = getApplicationContext().getSharedPreferences("MyPref", 0); 
      Editor editor = pref.edit(); 
      editor.putString("key_name", lang); 
      editor.commit(); 
      // chk = pref.getString("key_name", null); 
      txtV.setText(lang); 

     } 
    } 

}); 

pref = getApplicationContext().getSharedPreferences("MyPref", 0); 
chk = pref.getString("key_name", null); 
System.err.println("Get value is=====" + chk); 
if (chk != null) { 
    if (chk.equals("Gujarati")) { 
     gujarati.setChecked(true); 
    } 
    if (chk.equals("Hindi")) { 
     hindi.setChecked(true); 
    } 
    if (chk.equals("English")) { 
     english.setChecked(true); 
    } 
} 
0

Можете ли вы описать фактический поток? Включает ли он пользователя, который выбирает радиокнопку, экран закрывается, а затем пользователь возвращается на тот же экран, и вы хотите отобразить ранее выбранную радиокнопку в соответствии с выбранными?

Если это так, я считаю, что вам нужно специально установить переключатель/выбранный переключатель с чем-то вроде: ((RadioButton) radioGroup.getChildAt (INDEX)). SetChecked (true);

+0

пользователь переходит в окно выбора, нажав кнопку, а затем пользователь проверяет любой флажок, но когда пользователь снова переходит на этот экран выбора, все флажки уходят в состояние unchecked, также если пользователь снова запускает приложение, закрывая его, он также забывает все о проверенном статусе. –

+0

, пожалуйста, помогите мне решить эту проблему. –

+0

, пожалуйста, предоставьте мне любую ссылку, в которой есть руководство по SharedPreference. –

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