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);

rarray)はフォントではなく、フォントnullでもありません)。tfTrueType

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"

したがって、構成の変更によってこれが発生することはありません。

誰かがこれについて私を助けてください:この問題は何ヶ月も私を悩ませてきました。表示するコードがさらに必要な場合は、ぜひともお知らせください。提供します。

4

2 に答える 2

2

私はLuksprogのアドバイスを使用してこの問題を解決しました:nullアダプターを設定する前にコンテキストをチェックします。

単に:

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

みんなの助けてくれてありがとう。

于 2013-02-23T20:45:56.713 に答える
1

フラグメントのアダプターを作成しているようですが、OnCreate実行方法によっては、フラグメントがまだアクティビティにアタッチされていない可能性があります。より多くのコードは、実行される場所を確認するのに役立ちます。可能であれば、フラグメントがアクティビティにアタッチされる前に、現在実行中であり、アダプターを実行して作成しようとしていると思われるため、コードをReviewTask移動することをお勧めします。onCreateViewonCreate

于 2013-02-20T20:41:52.860 に答える