basecode78
Lurker
I don't understand why onDestroy is being logged twice for the fragment class in the the following code when the orientation of the device changes. Its logged once for the activity class, but twice for the fragment. Can someone explain to me what I am doing wrong, or why this is happening?
And here is the fragment class
And here is the output from logcat
Code:
public class ExampleActivity extends Activity {
protected String LOG_TAG = ExampleActivity.class.getSimpleName();
private FrameLayout mFragmentHolder;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
LogUtil.i(LOG_TAG, "onCreate");
setContentView(R.layout.activity_main);
mFragmentHolder = (FrameLayout) findViewById(R.id.root);
FragmentManager fm = getFragmentManager();
FragmentTransaction ft = fm.beginTransaction();
ft.replace(mFragmentHolder.getId(),MyFragment.newInstance());
ft.commit();
}
@Override
protected void onDestroy() {
super.onDestroy();
LogUtil.i(LOG_TAG, "onDestroy");
}
@Override
protected void onPause() {
super.onPause();
LogUtil.i(LOG_TAG, "onPause");
}
@Override
protected void onRestoreInstanceState(Bundle savedInstanceState) {
super.onRestoreInstanceState(savedInstanceState);
LogUtil.i(LOG_TAG, "onRestoreInstanceState");
}
@Override
protected void onResume() {
super.onResume();
LogUtil.i(LOG_TAG, "onResume");
}
@Override
protected void onStart() {
super.onStart();
LogUtil.i(LOG_TAG, "onStart");
}
@Override
protected void onStop() {
super.onStop();
LogUtil.i(LOG_TAG, "onStop");
}
}
And here is the fragment class
Code:
public class MyFragment extends Fragment {
protected String LOG_TAG = MyFragment.class.getSimpleName();
public static Fragment newInstance(){
return new MyFragment();
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.screen_login, container,
false);
return view;
}
@Override
public void onDestroy() {
super.onDestroy();
LogUtil.i(LOG_TAG, "onDestroy");
}
@Override
public void onPause() {
super.onPause();
LogUtil.i(LOG_TAG, "onPause");
}
@Override
public void onResume() {
super.onResume();
LogUtil.i(LOG_TAG, "onResume");
}
@Override
public void onStart() {
super.onStart();
LogUtil.i(LOG_TAG, "onStart");
}
@Override
public void onStop() {
super.onStop();
LogUtil.i(LOG_TAG, "onStop");
}
}
And here is the output from logcat
Code:
01-17 22:04:34.661: I/BaseApplication(21513): [0.0.7]-[BaseApplication]-[main]-[01/17/2014 22:04:34] onConfigurationChanged
01-17 22:04:34.706: I/MyFragment(21513): [0.0.7]-[MyFragment]-[main]-[01/17/2014 22:04:34] onPause
01-17 22:04:34.711: I/ExampleActivity(21513): [0.0.7]-[ExampleActivity]-[main]-[01/17/2014 22:04:34] onPause
01-17 22:04:34.721: I/MyFragment(21513): [0.0.7]-[MyFragment]-[main]-[01/17/2014 22:04:34] onStop
01-17 22:04:34.726: I/ExampleActivity(21513): [0.0.7]-[ExampleActivity]-[main]-[01/17/2014 22:04:34] onStop
01-17 22:04:34.731: I/MyFragment(21513): [0.0.7]-[MyFragment]-[main]-[01/17/2014 22:04:34] onDestroy
01-17 22:04:34.736: I/ExampleActivity(21513): [0.0.7]-[ExampleActivity]-[main]-[01/17/2014 22:04:34] onDestroy
01-17 22:04:34.766: I/ExampleActivity(21513): [0.0.7]-[ExampleActivity]-[main]-[01/17/2014 22:04:34] onCreate
01-17 22:04:34.866: I/MyFragment(21513): [0.0.7]-[MyFragment]-[main]-[01/17/2014 22:04:34] onDestroy
01-17 22:04:34.876: I/ExampleActivity(21513): [0.0.7]-[ExampleActivity]-[main]-[01/17/2014 22:04:34] onStart
01-17 22:04:34.881: I/MyFragment(21513): [0.0.7]-[MyFragment]-[main]-[01/17/2014 22:04:34] onStart
01-17 22:04:34.886: I/ExampleActivity(21513): [0.0.7]-[ExampleActivity]-[main]-[01/17/2014 22:04:34] onRestoreInstanceState
01-17 22:04:34.891: I/ExampleActivity(21513): [0.0.7]-[ExampleActivity]-[main]-[01/17/2014 22:04:34] onResume
01-17 22:04:34.896: I/MyFragment(21513): [0.0.7]-[MyFragment]-[main]-[01/17/2014 22:04:34] onResume