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