我使用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());
}
答案 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?