1

I made a spinner with OnItemSelectedListener function. I made it from an array, which contains 4 choises:

        String[] arrayOfString = new String[4];
    arrayOfString[0] = "Kiskunfélegyháza HQ [160kbps MP3]";
    arrayOfString[1] = "Kiskunfélegyháza MQ [64kbps AAC]";
    arrayOfString[2] = "Kiskunmajsa HQ [160kbps MP3]";
    arrayOfString[3] = "Kiskunmajsa MQ [64kbps AAC]";
    this.items = arrayOfString;

Loading data:

        PreferenceManager.setDefaultValues(this, 0x7f040000, false);
    final SharedPreferences localSharedPreferences = PreferenceManager.getDefaultSharedPreferences(this);
    this.mWebView_enabled = localSharedPreferences.getBoolean("mWebView_enabled", true);
    this.savszelesseg_port = localSharedPreferences.getString("savszelesseg_mentes", "savszelesseg_port");
    this.savszelesseg_saved = this.savszelesseg_port;

           final Spinner localSpinner = (Spinner)findViewById(R.id.savszelesseg);
    ArrayAdapter localArrayAdapter = new ArrayAdapter(this, android.R.layout.simple_spinner_item, this.items);
    localArrayAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
    localSpinner.setAdapter(localArrayAdapter);

If someone selects an option it will be saved to SharedPreferencies and change the music. But how to get back the data, when someone quit then reopen the app?

I save it as savszelesseg_mentes, and I save savszelesseg_port. I also has an option menu to save this setting.

    localSpinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() 
    {
        public void onItemSelected(AdapterView parentView, View paramView, int paramInt, long paramLong) 
        {
            if (!savszelesseg_port_modositva)
            {
              savszelesseg_port = localSharedPreferences.getString("savszelesseg_mentes", "savszelesseg_port");
              savszelesseg_port_modositva = true;

            }
            savszelesseg_beallitas = items[paramInt];

            if (savszelesseg_beallitas == "Kiskunfélegyháza HQ [160kbps MP3]")
            {
              savszelesseg_port = "8500/relay_911";
              SharedPreferences.Editor editor = localSharedPreferences.edit();
              editor.putString("savszelesseg_mentes", savszelesseg_port);
              editor.commit();
            }
            if (savszelesseg_beallitas == "Kiskunfélegyháza MQ [64kbps AAC]")
            {
              savszelesseg_port = "8500/relay_mobile_911";
              SharedPreferences.Editor editor = localSharedPreferences.edit();
              editor.putString("savszelesseg_mentes", savszelesseg_port);
              editor.commit();
            }
            if (savszelesseg_beallitas == "Kiskunmajsa HQ [160kbps MP3]")
            {
              savszelesseg_port = "8500/relay_882";
              SharedPreferences.Editor editor = localSharedPreferences.edit();
              editor.putString("savszelesseg_mentes", savszelesseg_port);
              editor.commit();
            }
            if (savszelesseg_beallitas == "Kiskunmajsa MQ [64kbps AAC]")
            {
             savszelesseg_port = "8500/relay_mobile_882";
             SharedPreferences.Editor editor = localSharedPreferences.edit();
             editor.putString("savszelesseg_mentes", savszelesseg_port);
             editor.commit(); 
            }




            if (lejatszas == 1 && savszelesseg_port_modositva)
            {

                  stopPlaying();
                  startPlaying();

            }

            if (lejatszas == 0 && savszelesseg_port_modositva == true)
            {
              startPlaying();
            }


        }

If nothing selected:

        public void onNothingSelected(AdapterView parentView) 
        {
        }
Simulator88
  • 617
  • 6
  • 12
  • 27

2 Answers2

2

you are comparing string not reference so use equals() method not to use ==

you are using

if (savszelesseg_beallitas == "Kiskunfélegyháza HQ [160kbps MP3]")

use instead

if (savszelesseg_beallitas.equals("Kiskunfélegyháza HQ [160kbps MP3]"))

or

if ("Kiskunfélegyháza HQ [160kbps MP3]".equals(savszelesseg_beallitas));

See If statement wont execute even though evaluation is true

Community
  • 1
  • 1
Mohammod Hossain
  • 4,134
  • 2
  • 26
  • 37
0

Something like this, you should do in order to get the data and then set the right selection:

int index = 0;
String savedString = localSharedPreferences.getString("savszelesseg_mentes", "");
for(int i = 0; i < arrayOfString.length(); i++){
    if(savedString.equals(arrayOfString[i])){
        index = i;
        break;
    }
}
localSpinner.setSelection(index, true);
Carnal
  • 21,744
  • 6
  • 60
  • 75
  • Where to put this? After that: final Spinner localSpinner = (Spinner)findViewById(R.id.savszelesseg); ArrayAdapter localArrayAdapter = new ArrayAdapter(this, android.R.layout.simple_spinner_item, this.items); localArrayAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); localSpinner.setAdapter(localArrayAdapter); – Simulator88 Sep 03 '12 at 12:08
  • you can override onStart() and put it there. – Carnal Sep 03 '12 at 12:10
  • Dont use it, just oncreate :) – Simulator88 Sep 03 '12 at 12:12
  • put it in on create then, after you have initialized "localSharedPreferences" and "localSpinner". Because you want this to happen when you start the activity. – Carnal Sep 03 '12 at 12:13
  • I have one more question: int index = 0; for(int i = 0; i < this.items.length; i++){ if(this.savszelesseg_port.equals(this.items[i])){ index = i; break; } } This loads just the saved value of the string not the title of it right? That's why it will be never equal. Because for example 8500/relay_911 not equal my string array Kiskunfélegyháza HQ [160kbps MP3] right? – Simulator88 Sep 03 '12 at 12:43
  • the index will tell you which row in Spinner was saved, and then select that row at startup. If nothing has been saved in SharedPreferences, then index will be 0 as default. – Carnal Sep 03 '12 at 12:45
  • it's true, they will never be equal. So should implement it in another way. – Carnal Sep 03 '12 at 12:46
  • How to get the android:entries value from the settings xml? :) – Simulator88 Sep 03 '12 at 12:47