在onPostExecute上有一点奇怪的java.lang.NullPointerException

时间:2013-09-18 15:13:19

标签: java android android-asynctask

谁能帮我解决这个奇怪的错误? 当我收到错误时,我标记了该行。 谢谢

         /************************************************
         *      setItemsAsReadTask
         ************************************************/

        private class SetItemsAsReadTask extends AsyncTask<ArrayList<FeedItem>, Void, Void> {

            @Override
              protected void onPreExecute() {
                //AGGIORNO LISTVIEW SUBSCRIPTIONS

                }


            @Override
            protected Void doInBackground(ArrayList<FeedItem> ... articoli) {
                if(this.isCancelled()==false){
                    if(articoli.length!=0){
                ArrayList<FeedItem> segnaComeLetti = articoli[0];
                reader.setMultipleNewsAsRead(segnaComeLetti);
                    }
                }
                return null;

            }

            @Override
            protected void onPostExecute(Void v) {
                //TODO TRUE O FALSE
                if(this.isCancelled()==false){
                    Log.d(TAG, "chiedo aggiornamento updateUI");
                    mCallbacks.onSubscriptionsUpdated();
                }<---- that's the line of the error
            }
        }

* * UPDATE

@Override
public void onAttach(Activity activity) {
    super.onAttach(activity);
    mCallbacks = (Callbacks)activity;
}

@Override
public void onDetach() {
    super.onDetach();
    mCallbacks = null;
}

1 个答案:

答案 0 :(得分:2)

您的mCallbacks变量可能为空。在调用方法之前,请使用防御性编程并检查null。另外,不要检查布尔值是否为假,而是使用非!逻辑运算符。

@Override
protected void onPostExecute(Void v) {
    if (!this.isCancelled()){
        Log.d(TAG, "chiedo aggiornamento updateUI");
        if (mCallbacks != null) {
            mCallbacks.onSubscriptionsUpdated();
        }
    }
}