まーた、はまりました orz
Fragment が Activity の全画面を占めていて、FragmentTransaction を使って Activity 内で画面切り替えをする場合です。
setContentView() でセットする View のコンテナである FrameLayout の ID が android.R.id.content なので、これを利用して
- @Override
- protected void onCreate(Bundle savedInstance) {
- super.onCreate(savedInstance);
- Page1Fragment f = new Page1Fragment();
- FragmentManager manager = getSupportFragmentManager();
- manager.beginTransaction()
- .replace(android.R.id.content, f)
- .commit();
- }
- public void moveToPage2() {
- Page2Fragment f = new Page2Fragment();
- FragmentManager manager = getSupportFragmentManager();
- manager.beginTransaction()
- .addToBackStack("tutorial2")
- .replace(android.R.id.content, f)
- .commit();
- }
この謎現象を解消するには、Activity に setContentView() で適当な View (FrameLayout とか)をセットします。
- @Override
- protected void onCreate(Bundle savedInstance) {
- super.onCreate(savedInstance);
- setContentView(new FrameLayout(this));
- Page1Fragment f = new Page1Fragment();
- FragmentManager manager = getSupportFragmentManager();
- manager.beginTransaction()
- .replace(android.R.id.content, f)
- .commit();
- }
ちなみに、3.0 以降では、setContentView() を呼ばなくても謎現象は起こりません。
0 件のコメント:
コメントを投稿