アプリがあります。それはフラグメントを使用しています。メイン アクティビティは 2 つのフラグメントから始まります。これらのフラグメントの 1 つには、次のように実行時に 3 番目のフラグメントを追加するために使用されるボタンが含まれています。
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Activity activity = getActivity();
if (fragment3 == null) {
getFragmentManager()
.beginTransaction()
.add(R.id.fragment_content3, new ThirdFragment())
.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_FADE)
.commit();
}
ThirdFragment クラスは次のようになります。
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
Log.v(getTag(), "FRAG onCreate CALLED!");
this.setRetainInstance(true);
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.third_fragment, container, false);
return view;
問題は、アクティビティが再作成されたときにこのフラグメントのビューが削除されないようにする方法を理解できないことです。onCreate() メソッドを @Override して setRetainInstance(true) を使用しようとしましたが、役に立ちませんでした。
だから、私の質問は:
アクティビティが再作成されたときに動的に(実行時に)追加されたフラグメントが削除されないようにするための適切なアプローチは何ですか?