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