Android Activity - 从操作栏获取微调器

标签 android android-activity

我使用 Android Studio 创建了一个新的 Activity,并选中了使用 Action Bar Spinner 的选项。在我的 Activity 代码中,我可以使用 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());
}

最佳答案

你有没有按照这里的例子: 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 并在那里执行您需要的操作。尚未测试此代码,所以 YMMV,但如果它不起作用,则有助于查看它是如何失败的。

关于Android Activity - 从操作栏获取微调器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24657440/

相关文章:

Android TextView getTextSize() 是否包括下行、上行

Android 选项卡 - 避免在选项卡点击时重新创建 Activity

android - 如何启动安卓设备并跳过屏幕锁定

android - 使用 DialogFragment 时如何连接到后退事件?

android - Robotium 测试找不到 Activity 类

android - 在 map 上绘制的多边形的填充颜色问题

java - 比较字符串和对象属性

java - Sharedpreferences 在 onCreateOptionsMenu 中不起作用

android - 如何在应用程序启动时执行代码

android-activity - 是否保证调用 Activity.onStop() (API 11 +)