我正試圖解決與方向更改重新啓動活動的問題。如何在操作欄下拉導航中設置活動項目?
我有一個ActionBar
與下拉列表導航,並在每次旋轉後此列表的第一個元素被激活。保持fragment
內容並不困難,但我不知道如何設置活動列表項。
這裏是ActionBar
定義:
getActionBar().setNavigationMode(ActionBar.NAVIGATION_MODE_LIST);
ArrayAdapter<CharSequence> list = ArrayAdapter
.createFromResource(this, R.array.action_list, android.R.layout.simple_dropdown_item_1line);
list.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
getActionBar().setListNavigationCallbacks(list, this);
這裏是我的解決辦法:
@Override
public boolean onNavigationItemSelected(int itemPosition, long itemId) {
if (!application.isRotated) {
application.activePosition = itemPosition;
application.activeId = itemId;
getFragmentManager().beginTransaction()
.replace(android.R.id.content, MyFragment.newInstance(itemPosition))
.commit();
} else {
application.isRotated = false;
this.onNavigationItemSelected(application.activePosition, application.activeId);
}
return true;
}
@Override
protected void onStop() {
super.onStop();
application.isRotated = true;
}
我不知道它是雖然最佳的解決方案。
你介意張貼的你是如何得到這個工作的例子嗎?我一直在嘗試像getActionBar()。setSelectedNavigationItem(1)但它沒有任何效果..(其他人在這裏有相同的問題:http://stackoverflow.com/questions/8487425/actionbar-dropdown-spinner-item -defaults-to-first-item) – brk3 2012-02-11 12:54:42
好的,更新了我的答案。此外,你可以看看我的應用程序的源代碼,看看我如何使用它。 https://github.com/Tsukanov/Simple-Counter/blob/master/src/me/tsukanov/counter/CounterActivity.java#L90 – Roman 2012-02-11 16:03:37
謝謝,它的作品!我想我一直在做錯的是在添加適配器之前調用setSelectedNavigationItem。以前肯定我是這麼試過的,但是哦,現在正在工作:) – brk3 2012-02-11 17:44:28