2012-01-27 27 views
11

2つのフラグメントを処理するViewPagerで1つのFragmentActivityがあります。Android - フラグメント画面の回転

public class MyFragmentActivity extends FragmentActivity{

private Fragment f1; private Fragment f2; private ViewPager myPager; private MyFragmentAdapter mFragmentsAdapter; private static ArrayAdapter<Fragment> mFragmentArray; public void onCreate(Bundle icicle) { super.onCreate(icicle); setContentView(R.layout.my_layout); myViewPager = (ViewPager) findViewById(R.id.pager_acciones); mFragmentArray = new ArrayAdapter<Fragment>(getApplicationContext(),android.R.layout.simple_list_item_1); f1 = new Fragment(); f1 = new Fragment(); mFragmentArray.add(f1); mFragmentArray.add(f2); mFragmentsAdapter = new MyFragmentAdapter(getSupportFragmentManager()); myPager.setAdapter(mFragmentsAdapter); myPartidoPager.setCurrentItem(0); } public static class MyFragmentAdapter extends FragmentPagerAdapter { public AccionesFragmentAdapter(FragmentManager fm) { super(fm); } @Override public int getCount() { return mFragmentArray.getCount(); } @Override public Fragment getItem(int position) { return mFragmentArray.getItem(position); } }

私の問題は毎回画面の向きの変更は、活動が作成され、また、フラグメントされていることです。アクティビティが再度作成されたかどうかは気にしませんが、フラグメントを再作成する必要はありません。

+0

私はあなたのためのoneilse14 @ソリューション[ここ](http://stackoverflow.com/questions/7951730/viewpager-and-fragments-whats-the-right-way-to-store-fragments-state)感謝を発見しましたとにかく答えてください。 – gutiory

答えて

0

あなたのFragmentAdapterをonSaveInstanceStateに保存し、onRetainNonConfigurationInstanceを使用して設定を変更した後にそのオブジェクトをActivityに戻すと、フラグメントはオリエンテーションを変更しても生き残ります。

+0

@ oneilse12。ありがとうございました。しかし、FragmentActivityでは、onRetainNonConfigurationInstanceメソッドをオーバーライドすることはできません。 – gutiory

13

最も簡単な方法は、on createメソッドが呼び出された直後にifステートメントをスローし、そこに何かがあるかどうかを確認することです。 savedInstanceStateがnullでない場合は、何もする必要はありません。

if (savedInstanceState == null){ 
    // do whatever 
} else { 
    // dont do anything 
} 

(この答えはフラグメントは再追加されますなぜ彼らは毎回彼らを把握することはできません。原因この質問つまずく人のためのより多くのですデバイスをオンにする)

2

android:configChanges="screenSize|orientation" に追加できます。

これは、AndroidのonCreateを呼び出して画面の向きを変更しないようにします。方向変更の特別な処理を実行する場合は、onConfigurationChangesを上書きできます。

+8

これらの回答はまだここに掲載されているとは思えません。もっとよく見てください:http://cyrilmottier.com/2014/09/25/deep-dive-into-android-state-restoration/ – dumazy

関連する問題