actionbarsherlock を使用するアプリがあります。これを使用します
android:configChanges="orientation"
マニフェスト ファイルで、ローテーション時にタブ フラグメントの再作成を停止する
ローテーションすると、フラグメントが再作成されずに正常に動作しますが、タブが詰まり、元の向きに戻るまで別のタブを選択できません。
主な活動はこちら
public class class_main extends SherlockFragmentActivity implements ActionBar.TabListener{
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_class_main);
getSupportActionBar()
.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);
ActionBar.Tab newTab0 = getSupportActionBar().newTab();
newTab0.setText("main");
newTab0.setTabListener(this);
ActionBar.Tab newTab1 = getSupportActionBar().newTab();
newTab1.setText("News");
newTab1.setTabListener(this);
ActionBar.Tab newTab2 = getSupportActionBar().newTab();
newTab2.setText("Calendar");
newTab2.setTabListener(this);
getSupportActionBar().addTab(newTab0);
getSupportActionBar().addTab(newTab1);
getSupportActionBar().addTab(newTab2);
if (savedInstanceState != null) {
getSupportActionBar().setSelectedNavigationItem(savedInstanceState.getInt("tab", 0));
}
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getSupportMenuInflater().inflate(R.menu.activity_class_main, menu);
return super.onCreateOptionsMenu(menu);
}
public void onTabSelected(Tab tab, FragmentTransaction ft) {
{
if(tab.getPosition()==0)
{
mainFragment frag = new mainFragment();
ft.replace(android.R.id.content, frag);
}
else if(tab.getPosition()==1)
{
newsFragment frag = new newsFragment();
ft.replace(android.R.id.content, frag);
}
else if(tab.getPosition()==2)
{
calendarFragment frag = new calendarFragment();
ft.replace(android.R.id.content, frag);
}
}
public void onTabUnselected(Tab tab, FragmentTransaction ft) {
// TODO Auto-generated method stub
}
public void onTabReselected(Tab tab, FragmentTransaction ft) {
// TODO Auto-generated method stub
}
protected void onSaveInstanceState(Bundle outState) {
super.onSaveInstanceState(outState);
outState.putInt("tab", getSupportActionBar().getSelectedNavigationIndex());
}
}
}