Android活动 - 从操作栏获取微调器

时间:2014-07-09 15:13:43

标签: android android-activity

我使用Android Studio创建了一个新的Activity,并选中了一个Action Bar Spinner选项。在我的活动代码中,我可以使用getActionBar()获取操作栏,但我无法弄清楚如何在操作栏中显示Spinner的实例,因为我需要在代码中设置所选项目。

有人可以告诉你怎么做吗?

修改

代码如下(其所有默认代码由Android Studio生成) - 我需要在onResume()中访问Spinner,我将添加:

private static final String STATE_SELECTED_NAVIGATION_ITEM 
= "selected_navigation_item";

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    // Set up the action bar to show a dropdown list.
    final ActionBar actionBar = getActionBar();
    actionBar.setDisplayShowTitleEnabled(false);
    actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_LIST);

    // Set up the dropdown list navigation in the action bar.
    actionBar.setListNavigationCallbacks(
            // Specify a SpinnerAdapter to populate the dropdown list.
            new ArrayAdapter<String>(
                    actionBar.getThemedContext(),
                    android.R.layout.simple_list_item_1,
                    android.R.id.text1,
                    new String[] {
                            "Email Fragment",
                            "Browser Fragment",
                            }),
            this);
}

@Override
public void onRestoreInstanceState(Bundle savedInstanceState) {
    // Restore the previously serialized current dropdown position.
    if (savedInstanceState.containsKey(STATE_SELECTED_NAVIGATION_ITEM)) {
        getActionBar().setSelectedNavigationItem(
                savedInstanceState.getInt(STATE_SELECTED_NAVIGATION_ITEM));
    }
}

@Override
public void onSaveInstanceState(Bundle outState) {
    // Serialize the current dropdown position.
    outState.putInt(STATE_SELECTED_NAVIGATION_ITEM,
            getActionBar().getSelectedNavigationIndex());
}

2 个答案:

答案 0 :(得分:1)

您是否按照此处的示例操作: http://developer.android.com/guide/topics/ui/actionbar.html#Dropdown

如果没有,请发布您的代码。

修改 好的,编辑时,问题是您为Spinner创建了ArrayAdapter,但没有将对象保留在任何位置。

您的班级可以有private ArrayAdapter mArrayAdapter,然后在您的onCreate中,请更改为:

// Set up the dropdown list navigation in the action bar.
mArrayAdapter = new ArrayAdapter<String>(
                actionBar.getThemedContext(),
                android.R.layout.simple_list_item_1,
                android.R.id.text1,
                new String[] {
                        "Email Fragment",
                        "Browser Fragment",
                        });

actionBar.setListNavigationCallbacks(
        // Specify a SpinnerAdapter to populate the dropdown list.
        mArrayAdapter, this);

然后你可以从你的onResume访问mArrayAdapter并在那里做你需要的。 Haven没有测试过这个代码,所以YMMV,但如果它没有工作,它有助于了解它是如何失败的。

答案 1 :(得分:0)

我相信你必须在设置内容视图之前调用它(就像任何其他窗口功能一样):

requestWindowFeature(Window.FEATURE_INDETERMINATE_PROGRESS);

然后你可以设置为true或false

setProgressBarIndeterminateVisibility(Boolean);

修改 似乎这可能是重复的。 Show progress spinner (refresh) on ActionBar?