1

ホスト アクティビティとフラグメントがあります。このフラグメントには、DB から AsyncTask にデータをロードし、GridView を更新する update メソッドがあります。

ホスト アクティビティからこのメソッドを呼び出すと、NullPointerExeption が発生することがありますが、その理由はわかりません...

インターフェイスであるアクティビティのメソッドは次のとおりです。

@Override
public void onDataSetChange() {

    ((CalendarFragment) getSupportFragmentManager().findFragmentByTag(Constants.FRAGMENT_CALENDAR_TAG)).updateGridView();
}

Fragment の update メソッドは次のとおりです。

public void updateGridView() {

    // Loading the new updated data
    mLoadingTask = new LoadingDataTask();
    mLoadingTask.execute((Void) null);
}

logcat の例外は次のとおりです。

04-17 12:05:28.366: E/AndroidRuntime(17789): 致命的な例外: メイン 04-17 12:05:28.366: E/AndroidRuntime(17789): java.lang.NullPointerException 04-17 12:05:28.366: E/AndroidRuntime (17789): com.sk.neverforget.MainActivity.onDataSetChange (MainActivity.java:397) 04-17 12:05:28.366: E/AndroidRuntime (17789): com.sk.neverforget.fragments.DiaryFragment で$StoringDataTask.onPostExecute (DiaryFragment.java:543) 04-17 12:05:28.366: E/AndroidRuntime (17789): com.sk.neverforget.fragments.DiaryFragment$StoringDataTask.onPostExecute (DiaryFragment.java:1) で 04- 17 12:05:28.366: E/AndroidRuntime(17789): android.os.AsyncTask.finish(AsyncTask.java:631) 04-17 12:05:28.366: E/AndroidRuntime(17789): android.os で。 AsyncTask.access$600(AsyncTask.java:177) 04-17 12:05:28.366: E/AndroidRuntime(17789): android.os.AsyncTask$InternalHandler.handleMessage(AsyncTask.java:644) 04-17 12:05:28.366: E/AndroidRuntime(17789): android.os.Handler.dispatchMessage(Handler.java:99) 04-17 12:05: 28.366: E/AndroidRuntime(17789): android.os.Looper.loop(Looper.java:137) 04-17 12:05:28.366: E/AndroidRuntime(17789): android.app.ActivityThread.main(ActivityThread) .java:5039) 04-17 12:05:28.366: E/AndroidRuntime(17789): java.lang.reflect.Method.invokeNative(ネイティブ メソッド) 04-17 12:05:28.366: E/AndroidRuntime(17789) : java.lang.reflect.Method.invoke(Method.java:511) 04-17 12:05:28.366: E/AndroidRuntime(17789): com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit) .java:793) 04-17 12:05:28.366: E/AndroidRuntime(17789): com.android.internal.os.ZygoteInit.main(ZygoteInit.java:560) 04-17 12:05:28.366:E/AndroidRuntime(17789): dalvik.system.NativeStart.main(ネイティブメソッド)

4

2 に答える 2

0

updateGridView を呼び出す前に、CalendarFragment の null を確認することをお勧めします。このフラグメントをいつ追加するかは明確ではありません。まだ追加されていないか、既に削除されている可能性があります。

@Override
public void onDataSetChange() {

CalendarFragment fragment =  ((CalendarFragment)getSupportFragmentManager().findFragmentByTag(Constants.FRAGMENT_CALENDAR_TAG));
if(fragment != null) fragment.updateGridView();
}
于 2013-04-17T12:08:22.707 に答える