我试图设置默认情况下需要在微调器中选择的项目的索引,但它始终默认为0(第1项)
actionBar.setDisplayShowTitleEnabled(false);
actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_LIST);
SpinnerAdapter spinnerAdapter =
new ArrayAdapter<String>(activity, android.R.layout.simple_spinner_dropdown_item,
names);
int selectedIndex = actionBar.getSelectedNavigationIndex();
if (selectedIndex != targetIndex) {
actionBar.setSelectedNavigationItem(targetIndex);
}
如果总是调用块,则在上面。即使在设置索引2之后,下次我检查它也会返回0.
编辑:我怀疑getSelectedNavigationIndex给出了actionBar项的索引而不是Spinner下拉项。如果是这种情况,什么方法设置下拉列表中所选项目的索引?
答案 0 :(得分:34)
确保在更改所选元素之前调用setListNavigationCallbacks方法。我在你的例子中看不到它,所以我认为这就是问题所在。
以下是一个例子:
actionBar = getActionBar();
actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_LIST);
actionBar.setListNavigationCallbacks(adapter, this);
actionBar.setSelectedNavigationItem(position);
它在我的应用程序中运行没有任何问题。
答案 1 :(得分:1)
您是否尝试使用shared prefences保存所选微调器的值。我使用此代码以共享首选项保存用户选择,以便下次打开应用程序时,微调器设置为他们选择的最后一个值:
Spinner Spinner = (Spinner) findViewById(R.id.Spinner);
String[] spinnervalues = getSpinnervalues();
ArrayAdapter<CharSequence> spinnerAdapter = new ArrayAdapter<CharSequence>(this, android.R.layout.simple_spinner_item, makes);
spinnerAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
Spinner.setAdapter(spinnerAdapter);
int position = Utils.getIndex(getSpinnerval(), makes);
Spinner.setOnItemSelectedListener(new OnItemSelectedListener() {
public void onItemSelected(AdapterView<?> parentView, View selectedItemView, int position, long id) {
String selected = (String) parentView.getSelectedItem();
Spinner Spinner = (Spinner) findViewById(R.id.Spinner);
String[] spinnervalues = Filter.this.getSpinnerval(selected);
ArrayAdapter<CharSequence> adapter = new ArrayAdapter<CharSequence>(Filter.this, android.R.layout.simple_spinner_item, models);
spinnerAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
Spinner.setAdapter(adapter);
}
public void onNothingSelected(AdapterView<?> parentView) {}
});
Spinner.setSelection(makeposition, true);
int position = Utils.getIndex(getSpinnerval());
if (position >= 0) {
Spinner Spinner = (Spinner) findViewById(R.id.Spinner);
Spinner.setSelection(position, true);
}
然后获取Util:
public String getSpinnerval() {
return getSharedPreferences().getString("val", "");
}
我稍微修改了代码,因此它可能不是100%正确但可能会给你一个想法。