碎片与Activity分离,没有明显的原因

时间:2016-05-12 09:51:19

标签: android android-activity fragment lifecycle

我的问题:当我通过应用程序管理器中的长按主页按钮(Samsung S4)关闭我的应用程序时,下次启动时一切正常。

但是,当我关闭onBackPressed中的应用程序时,关闭它时,我会在应用程序的下一次启动时崩溃,因为“getActivty”返回null。

我多次检查了在这两种情况下调用哪些生命周期方法,并且无法找到任何差异。

另外,我使用在另一个片段中产生崩溃的代码片段,但它工作正常。

问题是:为什么当Activity确定存活时,返回getActivity null?更好的是,为什么我的片段不再附加到活动了?

相关代码(我希望)

主片段的初始化:

    //Declared globally in Activity
    FirstFragment fr; 

    //In activities onCreate
    fr = new FirstFragment();
    getFragmentManager()
            .beginTransaction()
            .replace(R.id.main_fragment, fr, "first")
            .setTransitionStyle(FragmentTransaction.TRANSIT_FRAGMENT_FADE)
            .addToBackStack("")
            .commit();

使用此方法切换到第二个片段(参数“Object fragment”为“new SecondFragment”)

public void changeFragment(Object fragment, String name, boolean stayMain) {
    if (!stayMain) {
        findViewById(R.id.title_bar_left_button).setBackgroundResource(R.drawable.ic_back);
        findViewById(R.id.title_bar_left_button).setOnClickListener(backToMainListener);
    }

    ((TextView) findViewById(R.id.navTitle)).setText(name);

    findViewById(R.id.title_bar_right_button).setVisibility(View.GONE);

    getFragmentManager()
            .beginTransaction()
            .replace(R.id.main_fragment, (Fragment)fragment, name)
            .setTransitionStyle(FragmentTransaction.TRANSIT_FRAGMENT_FADE)
            .addToBackStack("")
            .commit();
}

导致崩溃的代码:(因为getActivity在描述的场景中返回null

 Context c = this.getActivity();

 AlertDialog.Builder builder = new AlertDialog.Builder(c);

感谢任何帮助

0 个答案:

没有答案