我的问题:当我通过应用程序管理器中的长按主页按钮(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);
感谢任何帮助