当我从片段活动导航到另一个活动时,片段活动会调用destroy方法

时间:2014-03-23 17:27:35

标签: android listview android-fragments android-listview

在我的应用程序中,如果我从一个片段移动到另一个片段,则会调用片段活动的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();

    }

如何保存和重用现有的片段对象?

1 个答案:

答案 0 :(得分:1)

这些是为什么在从一个片段移动到另一个片段时调用onDestroy方法的原因

http://www.androidoutput.com/2014/03/android-activity-ondestroy-called-always.html

它可能被您的Android操作系统杀死以释放内存,您可能正在调用完成或检查您的手机开发人员设置。