在我的Android应用程序中,我有一个问题,我已经解决了3天了。我阅读了很多帖子和答案,但仍无法找到我的解决方案。
我的问题是当我按下主页按钮并在很长一段时间后返回应用程序时它会崩溃(NullPointerException)。
这是我的DiscountDataFragment
View view = inflater.inflate(R.layout.discount_data, container, false);
mListView = (ListView)view.findViewById(R.id.discountCardListView);
mListView.setOnItemClickListener(this);
View v = View.inflate(mActivity,R.layout.search_view,null);
mListView.addHeaderView(v);
mSearchEditText =(MGEditText)v.findViewById(R.id.searchEditText);
mSearchEditText.addTextChangedListener(this);
v.findViewById(R.id.iplus).setOnClickListener(this);
return view;
}
这是我的例外
Caused by: java.lang.NullPointerException
at android.view.LayoutInflater.from(LayoutInflater.java:210)
at android.view.View.inflate(View.java:16459)
at com.example.android.BS.fragments.discount.DiscountDataFragment.onCreateView(DiscountDataFragment.java:45)
at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:871)
at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1083)
at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1065)
at android.support.v4.app.FragmentManagerImpl.dispatchActivityCreated(FragmentManager.java:1844)
at android.support.v4.app.FragmentActivity.onStart(FragmentActivity.java:519)
at android.app.Instrumentation.callActivityOnStart(Instrumentation.java:1164)
at android.app.Activity.performStart(Activity.java:5114)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2153)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2230)
at android.app.ActivityThread.access$600(ActivityThread.java:141)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1234)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:137)
at android.app.ActivityThread.main(ActivityThread.java:5039)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:511)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:793)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:560)
at dalvik.system.NativeStart.main(Native Method)
我无法理解为什么它会崩溃以及应用程序在返回长时间睡眠后无法充气的问题。
答案 0 :(得分:1)
在您返回视图后,调用onCreateView()
时可能尚未创建您的活动。
您应该做的是将所有依赖于活动的代码移动到onActivityCreated()方法。根据文档,这种方法是:
在创建片段的活动并且实例化此片段的视图层次结构时调用。
然后您可以使用您的活动。
此外,无需将活动传递给片段,因为您始终可以使用getActivity()
方法获取它。不通过您的活动也会限制您造成内存泄漏的可能性。