所以这个问题只发生了一些时间。我没有看到任何押韵或理由。我怀疑,用户在应用程序中移动的速度越快,发生的可能性就越大。
这是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
(array
)不是null
,tf
,TrueType
字体也不是。
在ReviewAdapter上,这是崩溃线42的另一面:
public ReviewAdapter(Context context, Review[] objects, Typeface tf) {
super(context, 0, objects); // line 42
我认为上下文是null
。
以下是全局:
我有FragmentActivity
Fragment
和ListFragment
。 adapter
当然在ListFragment
内。这些片段都不会相互影响。它们静态显示在xml
中。
所以在里面调用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"
因此配置更改不会导致此问题。
有人请帮助我:这个问题困扰了我好几个月。如果您需要更多代码来查看,请务必让我知道,我会提供!
答案 0 :(得分:2)
我通过使用Luksprog的建议解决了这个问题:在设置适配器之前检查上下文中的null
。
简单地:
if (getActivity() != null) { \\ set adapter }
感谢大家的帮助。
答案 1 :(得分:1)
听起来你可能正在创建片段的适配器OnCreate
,并且根据它的执行方式,片段可能尚未附加到活动。更多代码有助于查看ReviewTask
被执行的位置,如果可以,我建议将其移至onCreateView
,因为我怀疑它目前位于onCreate
并且正在运行并尝试创建在片段附加到其活动之前的适配器。