1

所以这个问题只发生几次。我看不到任何韵律或理由。我怀疑,用户在应用程序中移动的速度越快,它发生的可能性就越大。

这是LogCat:

02-20 12:09:58.526: E/AndroidRuntime(18777): FATAL EXCEPTION: main
02-20 12:09:58.526: E/AndroidRuntime(18777): java.lang.NullPointerException
02-20 12:09:58.526: E/AndroidRuntime(18777):    at android.widget.ArrayAdapter.init(ArrayAdapter.java:310)
02-20 12:09:58.526: E/AndroidRuntime(18777):    at android.widget.ArrayAdapter.<init>(ArrayAdapter.java:128)
02-20 12:09:58.526: E/AndroidRuntime(18777):    at com.---.---.ReviewAdapter.<init>(ReviewAdapter.java:42)
02-20 12:09:58.526: E/AndroidRuntime(18777):    at com.---.---.RateFragmentActivity$ReviewFragment$ReviewTask.onPostExecute(RateFragmentActivity.java:1203)
02-20 12:09:58.526: E/AndroidRuntime(18777):    at com.---.---.RateFragmentActivity$ReviewFragment$ReviewTask.onPostExecute(RateFragmentActivity.java:1)
02-20 12:09:58.526: E/AndroidRuntime(18777):    at android.os.AsyncTask.finish(AsyncTask.java:631)
02-20 12:09:58.526: E/AndroidRuntime(18777):    at android.os.AsyncTask.access$600(AsyncTask.java:177)
02-20 12:09:58.526: E/AndroidRuntime(18777):    at android.os.AsyncTask$InternalHandler.handleMessage(AsyncTask.java:644)
02-20 12:09:58.526: E/AndroidRuntime(18777):    at android.os.Handler.dispatchMessage(Handler.java:99)
02-20 12:09:58.526: E/AndroidRuntime(18777):    at android.os.Looper.loop(Looper.java:137)
02-20 12:09:58.526: E/AndroidRuntime(18777):    at android.app.ActivityThread.main(ActivityThread.java:5193)
02-20 12:09:58.526: E/AndroidRuntime(18777):    at java.lang.reflect.Method.invokeNative(Native Method)
02-20 12:09:58.526: E/AndroidRuntime(18777):    at java.lang.reflect.Method.invoke(Method.java:511)
02-20 12:09:58.526: E/AndroidRuntime(18777):    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:795)
02-20 12:09:58.526: E/AndroidRuntime(18777):    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:562)
02-20 12:09:58.526: E/AndroidRuntime(18777):    at dalvik.system.NativeStart.main(Native Method)

崩溃发生在这里:

adapter = new ReviewAdapter(getActivity(), r, tf);

r(an array) 不是null,也不是tfTrueType字体)。

在 ReviewAdapter 上,这是崩溃线 42 的另一侧:

public ReviewAdapter(Context context, Review[] objects, Typeface tf) {
        super(context, 0, objects);  // line 42

我相信上下文是null.

这是大图:

我有一个和FragmentActivity一个。当然是在里面。这些片段都没有相互作用。它们静态显示在. FragmentListFragmentadapterListFragmentxml

所以 ReviewAdapter 在里面被调用:

protected void onPostExecute(Void v) {

代替:

public class ReviewTask extends AsyncTask<String, String, Void> {

代替:

public static class ReviewFragment extends ListFragment {

代替:

public class RateFragmentActivity extends SherlockFragmentActivity implements
        ActionBar.TabListener {

这就是事物的背景。我一定没有正确处理我的片段生命周期,但这个错误是如此零星。

最后一点:我的清单中确实有这个:

   android:configChanges="orientation|screenSize|keyboardHidden"

所以配置更改不会导致这种情况。

有人请帮我解决这个问题:这个问题困扰了我好几个月。如果您需要查看更多代码,请务必告诉我,我会提供!

4

2 回答 2

2

null我通过使用 Luksprog 的建议解决了这个问题:在设置适配器之前检查上下文。

简单地:

if (getActivity() != null) { \\ set adapter }

感谢大家的帮助。

于 2013-02-23T20:45:56.713 回答
1

听起来您可能正在创建OnCreate片段的适配器,并且根据它的执行方式,片段可能尚未附加到活动。更多代码将有助于查看您ReviewTask的执行位置,如果可以的话,我建议将其移动到,onCreateView因为我怀疑它当前在onCreate其中并且它正在运行并尝试在您的 Fragment 附加到它的活动之前创建适配器。

于 2013-02-20T20:41:52.860 回答