Fragment.onDestroyは、Fragmentの破棄時に呼び出される。
Fragment1.javaで、
onDestroyでもログを出しておく。
Fragment2.javaも、
同様にonDestroyでログを出す。
MainActivity.javaは、
package com.bgstation0.android.sample.fragment_; import android.app.Activity; import android.app.FragmentManager; import android.app.FragmentTransaction; import android.os.Bundle; import android.view.Menu; import android.view.MenuItem; import android.view.View; import android.view.View.OnClickListener; import android.widget.Button; // メインアクティビティ public class MainActivity extends Activity implements OnClickListener{ // 生成時 @Override protected void onCreate(Bundle savedInstanceState) { // 既定の処理. super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); // Button1の処理. Button button1 = (Button)findViewById(R.id.button1); // button1を取得. button1.setOnClickListener(this); // リスナーとしてthisをセット. // Button2の処理. Button button2 = (Button)findViewById(R.id.button2); // button2を取得. button2.setOnClickListener(this); // リスナーとしてthisをセット. } // クリック時 public void onClick(View v){ // FragmentManager, fragmentTransactionの取得. FragmentManager fragmentManager = getFragmentManager(); // fragmentManagerの取得. FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction(); // fragmentTransactionの取得. // Buttonごとに分ける. int id = v.getId(); // v.getIdでidを取得. if (id == R.id.button1){ // button1なら. Fragment1 fragment1 = new Fragment1(); // fragment1を生成. fragmentTransaction.add(R.id.framelayout1, fragment1); // fragment1を追加. fragmentTransaction.commit(); // コミット. } else if (id == R.id.button2){ // button2なら. Fragment2 fragment2 = new Fragment2(); // fragment2を生成. fragmentTransaction.add(R.id.framelayout1, fragment2); // fragment2を追加. fragmentTransaction.commit(); // コミット. } } }
まず、addで追加。
addの場合は、
onDestroyは呼ばれない。
回転した場合、
いったん破棄されるので呼ばれる。
replaceの場合、
Fragment1への置換だけなら、
まだ呼ばれない。
Fragment2に置換すると、
Fragment1のonDestroyが呼ばれる。
Sample/android/Fragment/onDestroy/src/Fragment at master · bg1bgst333/Sample · GitHub