简体   繁体   English

如何使用微调器将选择保存到共享首选项

[英]How to use Spinner to Save selection to shared preference

I have a spinner view called Spinner_Gender , I made array, array adapter and made onItemSelectedListener . 我有一个名为Spinner_Gender的微调器视图,我制作了数组,数组适配器并制作了onItemSelectedListener I want to save the selected item position which is integer to shared preference, I tried using a string with Editor and putInt, it saved well. 我想保存选择的项目位置,该位置是共享首选项的整数,我尝试将字符串与Editor和putInt一起使用,保存得很好。 But when reloading the saved data to the spinner using .setSelection it gives an error because it wants an integer not string. 但是,使用.setSelection将保存的数据重新加载到微调器时,会出现错误,因为它需要一个整数而不是字符串。 Also while trying Integer in sharedpreference I can't save the selected item position to it because the putInt needs only a string to put int in. 另外,在sharedpreference中尝试使用Integer时,我无法将所选项目位置保存到其中,因为putInt只需要一个字符串即可将int放入其中。

Sorry for long question but I searched a lot and can't find answer. 抱歉,很长的问题,但我搜索了很多,却找不到答案。 Two more questions please: what is the integer name for spinner selectedItemPosition ? 请再提出两个问题:微调框selectedItemPosition的整数名称是什么? How can I store it to sharedpreference ? 如何将其存储到sharedpreference

Code: 码:

final Spinner spinner = (Spinner) findViewById(R.id.Spinner_Gender);
spinner.setAdapter(adapter); 
spinner.setOnItemSelectedListener( new AdapterView.OnItemSelectedListener() { 
      public void onItemSelected(AdapterView<?> parent, View itemSelected, 
                                final int selectedItemPosition, long selectedId) 
      { 
          int selectedPosition = spinner.getSelectedItemPosition(); 
          Editor editor = mGameSettings.edit(); 
          editor.putInt(myNum,selectedPosition); 
          editor.commit(); 
      }
}

I don't quite understand what's your issue with SharedPreferences. 我不太了解SharedPreferences的问题。 When you want to save the value you do something like this : 当您想保存值时,可以执行以下操作:

SharedPreferences test = getSharedPreferences("TEST", MODE_MULTI_PROCESS);
Editor editTest = test.edit();
editTest.putInt("key", id_from_spinner);
editTest.commit();

When you want to get the value you do something like this : 当您想获得价值时,可以执行以下操作:

SharedPreferences test = getSharedPreferences("TEST", MODE_MULTI_PROCESS);
int id = test.getInt("key", -1);
if(id != -1) {
    //use it in your spinner
} else {
    //abort because value was not set
}

要将Int转换为String,可以使用Integer.toString(theInteger) ;要将String转换为int,可以使用Integer.parseInt(theString)

You should do something like this 你应该做这样的事情

spinner.setSelection(dataAdapter.getPosition(genderstring));

Update : 更新:

final Spinner spinner = (Spinner) findViewById(R.id.Spinner_Gender);
spinner.setAdapter(adapter); 

spinner.setSelection(mGameSettings.getInt("gender", 0));

spinner.setOnItemSelectedListener( new AdapterView.OnItemSelectedListener() { 
      public void onItemSelected(AdapterView<?> parent, View itemSelected, 
                                final int selectedItemPosition, long selectedId) 
      { 
          Editor editor = mGameSettings.edit(); 
          editor.putInt("gender", selectedItemPosition); 
          editor.commit(); 
      }
}

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM