-2

Я создал диалоговое окно «Предупреждение» с кнопками «Радио», когда когда-либо я выбираю списки треков радиокнопки, доза не запоминает дорожки во время следующего выбора, поэтому я не могу узнать, какой трек в настоящее время играет. int currentselection = -1; Пожалуйста, проверьте код и скажите мне, есть ли какие-либо проблемы с моим кодом. Спасибо заранее ..Настройки радиокнопки не сохранены. Android

public class MainActivity extends Activity { 
Button b1; 
int currentselection = -1; 
@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 
    b1 = (Button) findViewById(R.id.button1); 
    final CharSequence[] items = { "Track #1", "Track #2","Track #3" }; 

    final AlertDialog.Builder builder = new AlertDialog.Builder(this); 
    builder.setTitle("Select Track"); 
    builder.setIcon(R.drawable.ic_launcher); 

    builder.setNeutralButton("Cancel", new DialogInterface.OnClickListener() { 
     public void onClick(DialogInterface dialog, int which) { 
      dialog.cancel(); 
     } 
    }); 
    builder.setSingleChoiceItems(items, currentselection, 
      new DialogInterface.OnClickListener() { 
       @Override 
       public void onClick(DialogInterface mdialog, int item) { 
        // TODO Auto-generated method stub 
        switch (item) { 
        case 0: 
         currentselection = 0; 
         Toast.makeText(getApplicationContext(), 
           items[item], Toast.LENGTH_SHORT).show(); 
         break; 
        case 1: 
         currentselection = 1; 
         Toast.makeText(getApplicationContext(), 
           items[item], Toast.LENGTH_SHORT).show(); 
         break; 
        case 2: 
         currentselection = 2; 
         Toast.makeText(getApplicationContext(), 
           items[item], Toast.LENGTH_SHORT).show(); 
         break; 
        } 
        mdialog.cancel(); 
       } 
      }); 
    b1.setOnClickListener(new OnClickListener() { 

     @Override 
     public void onClick(View v) { 
      // TODO Auto-generated method stub 

      AlertDialog alert = builder.create(); 
      alert.show(); 
     } 
    }); 
} 

@Override 
public boolean onCreateOptionsMenu(Menu menu) { 
    // Inflate the menu; this adds items to the action bar if it is present. 
    getMenuInflater().inflate(R.menu.main, menu); 
    return true; 
} 

} 
+3

Что вы подразумеваете под "не помню"? –

+0

@ Dany Joumaa Доза не отображает ранее выбранный элемент в списке. –

ответ

0
Radio button does not preserve value. So you loose them after exiting. You can handle radio button scenario in combination with sharedpreferences. 

After setting radio button add it to shared preferences like: 

private RadioButton mWifiDataButton = null; 
private RadioButton mWifiButton = null; 

in onCreate() .. 

mWifiDataButton = (RadioButton) findViewById(R.id.radio_wifi_data); 
mWifiDataButton.setOnClickListener(this); 

mWifiButton = (RadioButton) findViewById(R.id.radio_wifi_only); 
mWifiButton.setOnClickListener(this); 



Editor ed = pref.edit(); 
ed.putBoolean("pref_radio_wifidata",mWifiDataButton.isChecked()); 
ed.putBoolean("pref_radio_wifi",mWifiButton.isChecked()); 

and next time retrieve the values like this: 

mWifiDataButton.setChecked(pref.getBoolean("pref_radio_wifidata", true)); 
mWifiButton.setChecked(pref.getBoolean("pref_radio_wifi", false)); 



Then in onClick() handle it properly: 

@Override 
    public void onClick(View v) { 
     SharedPreferences pref = PreferenceManager.getDefaultSharedPreferences(getApplicationContext()); 
     switch(v.getId()){ 


      case R.id.radio_wifi_data: 
       pref = PreferenceManager.getDefaultSharedPreferences(getApplicationContext()); 
       boolean wifidataState = pref.getBoolean("pref_radio_wifidata", true); 
       mWifiDataButton.setChecked(!wifidataState); 
       mWifiButton.setChecked(wifidataState); 
       Editor ed = pref.edit(); 
       ed.putBoolean("pref_radio_wifidata", !wifidataState); 
       ed.putBoolean("pref_radio_wifi", wifidataState); 
       ed.commit(); 
       break; 
      case R.id.radio_wifi_only: 
       pref = PreferenceManager.getDefaultSharedPreferences(getApplicationContext()); 
       boolean wifiState = pref.getBoolean("pref_radio_wifi", false); 
       mWifiButton.setChecked(!wifiState); 
       mWifiDataButton.setChecked(wifiState); 
       Editor ed1 = pref.edit(); 
       ed1.putBoolean("pref_radio_wifi", !wifiState); 
       ed1.putBoolean("pref_radio_wifidata", wifiState); 
       ed1.commit(); 
       break; 

ed.commit(); 
+0

Hi Sai .. в случае, если какой-либо ответ решает вашу цель, пожалуйста, примите ответ, чтобы другие могли извлечь выгоду, легко справляясь с правильным ответом. спасибо – Sushil

1

вам необходимо либо сохранить его в базе данных, хранение или использование статического переменного и изменить значение переменного пользователя в любое время меняет radiobox.

Cheers,

+0

Можете ли вы объяснить мне статическую переменную ?? –

+0

Для простоты хранения небольших значений база данных не должна использоваться в соответствии с указаниями для Android. Общее предпочтение - лучший и самый простой способ сделать это. – Sushil

+0

@SaiKiran Вы можете следить за методом Sushil, на самом деле, он будет хорошо работать и выглядит вполне согласованным для android dev. Про статический val, как я уже сказал, вы можете объявить его в отдельный класс. Я точно не помню, но это что-то вроде public static String MY_VAL = ""; –

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