Android 在已选择SetOnItems的情况下加载并保存共享首选项中的微调器选择
我用MSelectedListener函数制作了一个微调器。我从一个数组中创建了它,其中包含4个选项:Android 在已选择SetOnItems的情况下加载并保存共享首选项中的微调器选择,android,spinner,sharedpreferences,default-value,Android,Spinner,Sharedpreferences,Default Value,我用MSelectedListener函数制作了一个微调器。我从一个数组中创建了它,其中包含4个选项: String[] arrayOfString = new String[4]; arrayOfString[0] = "Kiskunfélegyháza HQ [160kbps MP3]"; arrayOfString[1] = "Kiskunfélegyháza MQ [64kbps AAC]"; arrayOfString[2] = "Kiskunm
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;
加载数据:
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);
如果有人选择了一个选项,它将被保存到SharedReferences并更改音乐。但是,当有人退出并重新打开应用程序时,如何取回数据呢
我将其保存为savszelesseg_mentes,并保存savszelesseg_端口。我还有一个保存此设置的选项菜单
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();
}
}
如果未选择任何内容:
public void onNothingSelected(AdapterView parentView)
{
}
您正在比较字符串not reference,因此使用equals()方法不使用== 您正在使用
if (savszelesseg_beallitas == "Kiskunfélegyháza HQ [160kbps MP3]")
改用
if (savszelesseg_beallitas.equals("Kiskunfélegyháza HQ [160kbps MP3]"))
或
如果(“Kiskunfélegyháza HQ[160kbps MP3]”。等于(savszelesseg_beallitas))
请参见类似的内容,您应该执行以下操作以获取数据,然后设置正确的选择:
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);
int索引=0;
String savedString=localSharedPreferences.getString(“savszelesseg_mentes”,”);
对于(int i=0;i
if语句应该是“等于(str)”而不是“==str”。只是一个通知更改了它,但是spinner仍然没有从sharedprefs加载保存的值。显示加载数据的代码。更改了它,但是spinner仍然没有加载保存的数据。将其放置在何处?之后:final微调器localSpinner=(微调器)findViewById(R.id.savszelesseg);ArrayAdapter localArrayAdapter=新的ArrayAdapter(this,android.R.layout.simple\u微调器\u项,this.items);localArrayAdapter.setDropDownViewResource(android.R.layout.simple\u微调器\u下拉菜单\u项);setAdapter(localArrayAdapter);您可以重写onStart()并将其放在那里。不要使用它,只需一次创建:)在初始化“LocalSharedReferences”和“localSpinner”之后,将其放在create上。因为您希望在启动活动时发生这种情况。我还有一个问题:int index=0;对于(inti=0;i