Java 获取微调器位置并将其选中

Java 获取微调器位置并将其选中,java,android,android-spinner,Java,Android,Android Spinner,我需要在prefs中保存微调器的值或位置,当用户访问“设置”活动时,会将其显示为选中状态。但是我遇到了麻烦。我的问题是获取项目位置并按列表中的选择使用它 微调器代码 Spinner spinner = (Spinner) findViewById(R.id.spinner1); ArrayAdapter<CharSequence> adapter = ArrayAdapter.createFromResource( this, R.array.

我需要在prefs中保存微调器的值或位置,当用户访问“设置”活动时,会将其显示为选中状态。但是我遇到了麻烦。我的问题是获取项目位置并按列表中的选择使用它

微调器代码

    Spinner spinner = (Spinner) findViewById(R.id.spinner1);
    ArrayAdapter<CharSequence> adapter = ArrayAdapter.createFromResource(
            this, R.array.spinner, android.R.layout.simple_spinner_item);
    adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
    spinner.setAdapter(adapter);

    spinner.setOnItemSelectedListener(new OnItemSelectedListener() {

        public void onItemSelected(AdapterView<?> parent, View view,
                int position, long id) {

            item = parent.getSelectedItem().toString();
            Log.v("SPINNER", item);

             //SAVE PREFS WITH SPINNER VALUE
             SharedPreferences prefs;
             prefs = PreferenceManager.getDefaultSharedPreferences(getBaseContext());
             SharedPreferences.Editor prefEditor = prefs.edit();
             prefEditor.putString("spinner",item);
             prefEditor.commit();
             //RETREIVE SPINNER VALE PREFS
             String spinner=PreferenceManager
                     .getDefaultSharedPreferences(getBaseContext())
                     .getString("spinner","");
//CHECK 
for(int i=0;i<9;i++)
if(spinner.equals(parent.getSelectedItem().toString())){
     spinner.setSelection(parent.getItemAtPosition(position));
     break;
}

        }

        public void onNothingSelected(AdapterView<?> parent) {
            //String str = "Selecciona";
        }

    });
Spinner-Spinner=(Spinner)findviewbyd(R.id.spinner1);
ArrayAdapter=ArrayAdapter.createFromResource(
这个,R.array.spinner,android.R.layout.simple\u spinner\u项);
setDropDownViewResource(android.R.layout.simple\u微调器\u下拉菜单\u项);
旋转器。设置适配器(适配器);
spinner.setOnItemSelectedListener(新的OnItemSelectedListener(){
已选择公共视图(AdapterView父视图、视图、,
内部位置,长id){
item=parent.getSelectedItem().toString();
Log.v(“微调器”,项目);
//使用微调器值保存pref
共享引用优先权;
prefs=PreferenceManager.GetDefaultSharedReferences(getBaseContext());
SharedReferences.Editor prefEditor=prefs.edit();
putString(“微调器”,项);
提交();
//回收纺纱机谷PREFS
字符串微调器=首选项管理器
.GetDefaultSharedReferences(getBaseContext())
.getString(“微调器”,“微调器”);
//检查
对于(inti=0;i这可能会有所帮助

if(spinner.equals(parent.getSelectedItem().toString())){
换成

if(item.equals(parent.getSelectedItem().toString())){

如果我正确理解了您的问题。

for循环和If条件之间没有有用的关系:

for(int i=0;i<9;i++)

if(spinner.equals(parent.getSelectedItem().toString())){
spinner.setSelection(parent.getItemAtPosition(position));

对于(int i=0;i我认为获取微调器中所选项目的更好方法是使用onItemSelected方法,使用position变量获取该位置的项目

item = parent.getItemAtPostion(position).toString();
然后,当用户使用此微调器导航回视图时,您可以通过首先在适配器中查找项目的位置(因为您使用的是
ArrayAdapter
),然后设置微调器的位置来设置微调器的位置,适配器将从该位置定位微调器

String spinner=PreferenceManager
                 .getDefaultSharedPreferences(getBaseContext())
                 .getString("spinner","");
int position = adapter.getPosition(item);
spinner.setSelection(position);

“当用户访问设置活动时”是什么意思?您的java代码乱七八糟。微调器用于“我的设置”活动,当用户在“设置”中选择了某些项目时,我想选择他们选择的微调器值。对不起,我的英语
String spinner=PreferenceManager
                 .getDefaultSharedPreferences(getBaseContext())
                 .getString("spinner","");
int position = adapter.getPosition(item);
spinner.setSelection(position);