首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >ActionBar下拉微调器项默认为第一项

ActionBar下拉微调器项默认为第一项
EN

Stack Overflow用户
提问于 2011-12-13 18:13:17
回答 2查看 14.9K关注 0票数 18

我正在尝试设置需要在微调器中默认选择的项目的索引,但它总是默认为0(第一个项目)

代码语言:javascript
复制
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项的索引,而不是微调工具下拉项。如果是这样,在dropdown中设置选中项的索引的方法是什么?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-02-12 12:30:07

确保在更改所选元素之前调用了setListNavigationCallbacks方法。我在你的例子中看不到,所以我认为这就是问题所在。

下面是一个示例:

代码语言:javascript
复制
actionBar = getActionBar();
actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_LIST);
actionBar.setListNavigationCallbacks(adapter, this);
actionBar.setSelectedNavigationItem(position);

它在我的应用程序中运行没有任何问题。

票数 34
EN

Stack Overflow用户

发布于 2012-01-14 00:27:33

您是否尝试过使用shared prefences保存选定微调器的值。我使用此代码来保存用户的选择和共享首选项,以便下次他们打开应用程序时,微调器将设置为他们选择的最后一个值:

代码语言:javascript
复制
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);
}

然后是get Util:

代码语言:javascript
复制
public String getSpinnerval() {
    return getSharedPreferences().getString("val", "");
}

我稍微修改了一下代码,所以它可能不是100%正确的,但可能会给你一个想法。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8487425

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档