기본적으로 내 질문에 좀 "쉬운"입니다 : 나는
풍경이 태블릿 레이아웃이 있습니다태블릿 레이아웃 변경은 화면 방향 오류에 따라
및 레이아웃 경우를 변경하려면 사용자는이 레이아웃에, 세로 모드로 태블릿을 회전 :
첫 번째, 풍경, 레이아웃에서 Ui는 한 번에 두 조각을 보여줍니다. 오른쪽에는 Fragment1
이고 Fragment2
입니다. Fragment2
의 컨테이너는 ViewPager
이며 Fragment3
도 포함되어 있습니다. Fragment3
은 사용자가 스 와이프 한 것을 보거나 ActionBar
의 탭을 클릭합니다.
두 번째, 인물, 레이아웃 Ui는 세 번 모두 Fragment
을 표시하고, ViewPager
은 불필요하므로 탭도 제거됩니다.
내가 이렇게 내 MainActivity에 가로 레이아웃과 creat :
// ActionBar Stuff
mActionbar = getSupportActionBar();
mActionbar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);
mActionbar.setHomeButtonEnabled(false);
// Swipe Stuff
mAdapter = new FragmentAdapter(fm);
mPager = (ViewPager) findViewById(R.id.viewpager);
mPager.setAdapter(mAdapter);
mPager.setOnPageChangeListener(this);
// Initialize Tabs
Tab1 = mActionbar.newTab().setText("Tab1");
Tab2 = mActionbar.newTab().setText("Tab2");
// Set Tab to Fragment // they're initialized here and accessed in the ViewPager (mPager)
Fragment1 = new FirstFragment();
Fragment3 = new ThirdFragment();
android.support.v4.app.FragmentManager fm = getSupportFragmentManager();
android.support.v4.app.FragmentTransaction ft = fm.beginTransaction();
ft.replace(R.id.fragment_one_container, Fragment1).commit();
// //TabListener///////////////////////////
Tab1.setTabListener(new TabsListener(mApp, 0 + "", mPager));
Tab2.setTabListener(new TabsListener(mApp, 1 + "", mPager));
// //Add Tabs//////////////////////////////
mActionbar.addTab(Tab1);
mActionbar.addTab(Tab2);
탐색 (런타임에 다른 Fragment
들과 Fragment2
를 교체 같은 슬쩍에서 좀 더 복잡한 일에 두 조각 사이의 ViewPager
스위치,).
지금까지 모든 것이 괜찮습니다, 세로 레이아웃 내 코드가 비슷하다
// ActionBar Stuff
mActionbar = getSupportActionBar();
mActionbar.setHomeButtonEnabled(false);
// Swipe Stuff
mAdapter = new FragmentAdapter(fm);
mPager = (ViewPager) findViewById(R.id.viewpager);
mPager.setAdapter(mAdapter);
mPager.setOnPageChangeListener(this);
// Set Tab to Fragment // they're initialized here and accessed in the ViewPager (mPager)
Fragment1 = new FirstFragment();
Fragment3 = new ThirdFragment();
android.support.v4.app.FragmentManager fm = getSupportFragmentManager();
android.support.v4.app.FragmentTransaction ft = fm.beginTransaction();
ft.replace(R.id.fragment_one_container, Fragment1);
ft.replace(R.id.fragment_three_container, Fragment3);
ft.commit();
ViewPager는 Fragment2
의 컨테이너, 다른 컨테이너 위의 코드에 설명되어 있습니다.
레이아웃 파일 R.layout.main_tablet_land
및 R.layout.main_tablet_port
은 layout-lard-land
및 layout-large-port
입니다. java.lang.IllegalStateException: Can't change container ID of fragment Fragment3
내가 onConfiguratioChange
를 오버라이드하고 setContentView(layout)
와 레이아웃을 다시 적용 및 레이아웃에 대한 메소드를 호출하려고 :
내 실제 문제는 표시,이 작품, 내 문제는 방향 변경, 나는이 예외가되지 않는다 tablet_land
(첫 번째 코드 블록) 및 tablet_port
(두 번째 블록). (그리고 더 많은 ..)
어떤 생각을 피하는 방법?
편집 : 아이디어가 없습니까?