在我的应用程序中,如果我从一个片段移动到另一个片段,则会调用片段活动的onDestroy函数。
在我的应用程序中,有一个listfragment和一个slidemenu片段。现在,如果我点击任何项目的listfragment onDestroy片段活动将被调用。
如果按后退按钮,我的片段对象将为NULL,为什么会这样?在这种情况下需要做些什么。 这是我的完整代码
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setBehindContentView(R.layout.left_options_menu);
getSlidingMenu().setMode(SlidingMenu.LEFT);
getSlidingMenu().setTouchModeAbove(SlidingMenu.TOUCHMODE_FULLSCREEN);
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
getSupportActionBar().setHomeButtonEnabled(true);
setContentView(R.layout.layout_list_items);
if (findViewById(R.id.id_list_options_menu) != null) {
if(savedInstanceState == null)
{
mOptionsFragment = new LeftSliderListOptions();
mListFragment = new GTasksFragment();
FragmentManager manager=getSupportFragmentManager();
FragmentTransaction transaction=manager.beginTransaction();//create an instance of Fragment-transaction
transaction=manager.beginTransaction();
transaction.add(R.id.id_task_list_options_menu, mOptionsFragment, "optionfragment");
transaction.add(R.id.id_list_fragment, mListFragment, "mainlistfragment");
transaction.commit();
}
}
SlidingMenu sm = getSlidingMenu();
sm.setShadowWidthRes(R.dimen.shadow_width);
sm.setFadeEnabled(false);
sm.setShadowDrawable(R.drawable.shadow);
sm.setBehindOffsetRes(R.dimen.slidingmenu_offset);
sm.setFadeDegree(0.35f);
sm.setTouchModeAbove(SlidingMenu.TOUCHMODE_FULLSCREEN);
}
@Override
public void onDestroy()
{
super.onDestroy();
}
如何保存和重用现有的片段对象?
答案 0 :(得分:1)
这些是为什么在从一个片段移动到另一个片段时调用onDestroy方法的原因
http://www.androidoutput.com/2014/03/android-activity-ondestroy-called-always.html
它可能被您的Android操作系统杀死以释放内存,您可能正在调用完成或检查您的手机开发人员设置。