2017-11-30 19 views
0

私のフラグメントの1つに、getFragmentManager()メソッドを使用してFragmentManagerオブジェクトを作成するボタンがあります。うまくいきましたが、デバイスの向きを回転させた後、そのボタンで呼び出されたgetFragmentManager()はnullを返します。getFragmentManager()は画面回転後nullを返します

FragmentManager fm = getFragmentManager(); 
    if(fm != null){ 
     FragmentTransaction transaction = fm.beginTransaction(); 
     transaction.replace(R.id.main_container, myFragment); 
     transaction.commit(); 
    } 

この場合、画面を回転させた後は、この「if」のコードは決して発生しません。

EDIT: 私のマニフェスト:

<uses-permission android:name="android.permission.INTERNET" /> 

<application 
    android:allowBackup="true" 
    android:icon="@mipmap/ic_launcher" 
    android:label="@string/app_name" 
    android:roundIcon="@mipmap/ic_launcher_round" 
    android:supportsRtl="true" 
    android:theme="@style/AppTheme"> 
    <activity 
     android:name=".MainActivity" 
     android:configChanges="keyboardHidden|orientation|screenSize" 
     android:label="@string/app_name" 
     android:theme="@style/AppTheme.NoActionBar"> 
     <intent-filter> 
      <action android:name="android.intent.action.MAIN" /> 

      <category android:name="android.intent.category.LAUNCHER" /> 
     </intent-filter> 
    </activity> 
</application> 

+1

があなたをしましたあなたのフラグメントに 'setRetainInstance(true)'を使用しますか?また、以前のAPIでサポートされているので、代わりに 'getActivity()。getFragmentManager()'を使用してみます。 –

答えて

-1

防止回転させた後、あなたの活動のレクリエーション、あなたのAndroidManifest.xmlファイルにあなたの活動にこれを追加します。

android:configChanges="keyboardHidden|orientation|screenSize" 
+0

この行を追加すると、私のアプリケーションはランドスケープデザインのレイアウトを使用しなくなりますので、アプリケーション全体が乱れることがあります – Jahusek

+0

あなたのandroidmanifestを入れてください – diegoveloper

+0

ええ、私はマニフェストの投稿を更新しました – Jahusek

関連する問題