如何使用Spinner将选择保存到共享首选项

时间:2012-07-19 17:25:11

标签: java android

我有一个名为Spinner_Gender的微调视图,我制作了数组,数组适配器并制作了onItemSelectedListener。我想将选定的项目位置保存为共享首选项的整数,我尝试使用带有Editor和putInt的字符串,它保存得很好。但是当使用.setSelection将保存的数据重新加载到微调器时,它会产生错误,因为它需要整数而不是字符串。同时在共享首选项中尝试Integer时,我无法将所选项目位置保存到它,因为putInt只需要一个字符串来放入int。

很抱歉很长的问题,但我搜索了很多,找不到答案。还有两个问题: 微调器selectedItemPosition的整数名称是什么?如何将其存储到sharedpreference

代码:

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(); 
      }
}

3 个答案:

答案 0 :(得分:1)

我不太明白你的SharedPreferences问题是什么。 如果要保存值,可以执行以下操作:

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

当你想获得价值时,你会做这样的事情:

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
}

答案 1 :(得分:0)

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

答案 2 :(得分:0)

你应该做这样的事情

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

更新:

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(); 
      }
}