向きの変更時にアクティビティを再開するという問題を修正しようとしています。
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;
}
それが最善の解決策かどうかはわかりません。