【问题标题】:Application crushes after onResumeonResume 后应用程序崩溃
【发布时间】:2014-03-16 08:13:47
【问题描述】:

在我的 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)

我不明白为什么它会崩溃,以及应用程序在返回长时间睡眠后无法膨胀视图的问题是什么。

  1. 崩溃的应用程序是什么问题?
  2. 您还可以提供哪些解决方案来解决此问题?

【问题讨论】:

  • 请注明第 45 行 @DiscountDataFragment 并将 View.inflate(mActivity,R.layout.search_view,null); 更改为 view.inflate(mActivity,R.layout.search_view,null);,并查看 v
  • 我也尝试过这种方式,但它再次崩溃了同样的异常
  • 你在初始化mActivity对象吗?
  • public DiscountDataFragment(DefaultActivity pActivity) { mActivity = pActivity; }
  • 第 45 行是 View v = view.inflate(mActivity,R.layout.search_view,null);

标签: android android-layout android-fragments nullpointerexception android-fragmentactivity


【解决方案1】:

返回视图后,调用onCreateView() 时可能尚未创建活动。

您应该做的是将所有依赖于活动的代码移至onActivityCreated() 方法。根据文档,此方法是:

在创建片段的 Activity 并实例化该片段的视图层次结构时调用。

然后您可以使用您的活动。

此外,无需将活动传递给片段,因为您始终可以使用getActivity() 方法获取它。不通过您的活动也将限制您创建内存泄漏的机会。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-05-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-03-09
    相关资源
    最近更新 更多