2013-06-07 2 views
4

lang.NullPointerException android.widget.ArrayAdapter.init (ArrayAdapter.java) просто добавляю значения Arraylist в класс customAdapter и устанавливаю эти значения в ListView смотрите ниже код helpm мнеjava.lang.NullPointerException at android.widget.ArrayAdapter.init (ArrayAdapter.java)

благодаря

private void fetchCallLogsDetails(String selectedId) { 
     this.SelectedLogId = selectedId; 
     new FetchCallLogDetailsAsyncTask() { 
      protected void onPostExecute(Boolean result) { 

       if (mCallLogModel.getmPhoto() != null) { 
        mCallLogPhoto.setImageBitmap(mCallLogModel.getmPhoto()); 
       } 

       mCallLogDetailName.setText(mCallLogModel.getmName()); 
       mCallLogDetailNumber.setText(mCallLogModel.getmNumber()); 

       mCallLogDetailName.setTextSize(12); 
       mCallLogDetailNumber.setTextSize(10); 

       mLogAuditUtilList = mCallLogModel.getmLogAuditUtilList(); 
       if (mLogAuditUtilList != null) { 
        mCallLogAuditArrayAdapter = new CallLogAuditArrayAdapter(
          getActivity(), R.id.details_audit_log_list, 
          mLogAuditUtilList); 

        mAuditListView.setAdapter(mCallLogAuditArrayAdapter); 
       } 

      }; 
     }.execute(""); 
    } 
    class FetchCallLogDetailsAsyncTask extends 
      AsyncTask<String, Integer, Boolean> { 
     @Override 
     protected Boolean doInBackground(String... params) { 
      // reading call logs from contentReslover 
      mCallLogUtil = CallLogUtil.newInstance(mconContentResolver); 
      mCallLogModel = mCallLogUtil.selectedLogDetails(SelectedLogId); 
      return false; 
     } 

    } 



customeAdapter class 
------------------------- 

public class CallLogAuditArrayAdapter extends ArrayAdapter<LogAuditUtil> { 
    private LayoutInflater minflater; 
    private ImageView mCallTypeImage; 

    public CallLogAuditArrayAdapter(Context context, int textViewResourceId, 
      List<LogAuditUtil> objects) { 
     super(context, textViewResourceId, objects); 

     minflater = LayoutInflater.from(context); 
    } 

    @Override 
    public View getView(int position, View convertView, ViewGroup parent) { 
     // TODO Auto-generated method stub 
     final LogAuditUtil mLogAuditUtil = this.getItem(position); 

     convertView = minflater.inflate(R.layout.call_logs_details_list_view, 
       null); 
     TextView mCallType = (TextView) convertView 
       .findViewById(R.id.call_logs_details_list_view_type_id); 
     TextView mDetailsDate = (TextView) convertView 
       .findViewById(R.id.call_logs_details_list_view_date_id); 
     mCallTypeImage = (ImageView) convertView 
       .findViewById(R.id.call_logs_details_list_view_type_image_id); 

     TextView mCallDuration = (TextView) convertView 
       .findViewById(R.id.call_logs_details_list_view_call_duration_id); 

     mCallType.setTextSize(12); 
     mDetailsDate.setTextSize(10); 
     mCallDuration.setTextSize(8); 

     switch (Integer.parseInt(mLogAuditUtil.getmAuditType())) { 
     case 1: 
      mCallType.setText(R.string.text_incoming_call); 
      mCallTypeImage.setImageResource(R.drawable.incoming_call); 
      break; 

     case 2: 
      mCallTypeImage.setImageResource(R.drawable.outgoing_call); 
      mCallType.setText(R.string.text_outgoing_call); 
      break; 

     case 3: 
      mCallTypeImage.setImageResource(R.drawable.missed_call); 
      mCallType.setText(R.string.text_missed_call); 
      break; 
     } 

     mDetailsDate.setText(mLogAuditUtil.getmAuditDate()); 
     mCallDuration.setText(mLogAuditUtil.getmAuditDuration()); 
     return convertView; 
    } 

} 

когда я подножка этого кода я получаю ошибки раздува в catlog

E/AndroidRuntime(3047): FATAL EXCEPTION: main 
06-07 19:58:56.257: E/AndroidRuntime(3047): java.lang.NullPointerException 
06-07 19:58:56.257: E/AndroidRuntime(3047):  at android.widget.ArrayAdapter.init(ArrayAdapter.java:310) 
06-07 19:58:56.257: E/AndroidRuntime(3047):  at android.widget.ArrayAdapter.<init>(ArrayAdapter.java:153) 
06-07 19:58:56.257: E/AndroidRuntime(3047):  at com.movirtu.contactsUtil.CallLogsArrayAdapter.<init>(CallLogsArrayAdapter.java:30) 
06-07 19:58:56.257: E/AndroidRuntime(3047):  at com.movirtu.fragments.CallLogsFragment$2.onPostExecute(CallLogsFragment.java:88) 
06-07 19:58:56.257: E/AndroidRuntime(3047):  at com.movirtu.fragments.CallLogsFragment$2.onPostExecute(CallLogsFragment.java:1) 
06-07 19:58:56.257: E/AndroidRuntime(3047):  at android.os.AsyncTask.finish(AsyncTask.java:602) 
06-07 19:58:56.257: E/AndroidRuntime(3047):  at android.os.AsyncTask.access$600(AsyncTask.java:156) 
06-07 19:58:56.257: E/AndroidRuntime(3047):  at android.os.AsyncTask$InternalHandler.handleMessage(AsyncTask.java:615) 
06-07 19:58:56.257: E/AndroidRuntime(3047):  at android.os.Handler.dispatchMessage(Handler.java:99) 
06-07 19:58:56.257: E/AndroidRuntime(3047):  at android.os.Looper.loop(Looper.java:137) 
06-07 19:58:56.257: E/AndroidRuntime(3047):  at android.app.ActivityThread.main(ActivityThread.java:4340) 
06-07 19:58:56.257: E/AndroidRuntime(3047):  at java.lang.reflect.Method.invokeNative(Native Method) 
06-07 19:58:56.257: E/AndroidRuntime(3047):  at java.lang.reflect.Method.invoke(Method.java:511) 
06-07 19:58:56.257: E/AndroidRuntime(3047):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:784) 
06-07 19:58:56.257: E/AndroidRuntime(3047):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:551) 
06-07 19:58:56.257: E/AndroidRuntime(3047):  at dalvik.system.NativeStart.main(Native Method) 
06-07 19:58:58.917: I/Process(3047): Sending signal. PID: 3047 SIG: 9 
+4

является 'getActivity', возвращающим' null'? когда вы вызываете этот код, фрагмент прикреплен? – rciovati

+0

спасибо, но я пробовал работать нормально, но когда я общаюсь с фрагментами синхронно снова, появляется такая же ошибка, как и для этой ошибки – venu

ответ

8

Эта проблема вызвана тем, что getActivity() возвращает нуль на время вы создаете адаптер:

new CallLogAuditArrayAdapter(getActivity(), R.id.details_audit_log_list, mLogAuditUtilList); 

Это может произойти, если активность еще не присоединена к фрагменту, или его был отсоединен. Для того, чтобы решить эту проблему можно либо убедиться, что метод fetchCallLogsDetails вызывается только при корректном состоянии прикрепленной деятельности или вы можете игнорировать вызов, если getActivity() == NULL или getActivity.isFinishing().

+0

Извините, если я отвечу и повторно открою вопрос сейчас, но у меня такая же проблема, и я не понял, как именно писать. так что если getActivity() == null, я не запускаю asynktask? –

+0

вы можете сделать это на своем onPostExecute() ... например: остановить выполнение onPostExecute(), если getActivity == null ИЛИ getActivity.isFinishing() == true ... это потому, что результат onPostExecute () поступает асинхронно, и к тому моменту, когда это произойдет, возможно, что активность была отключена или уничтожена (либо потому, что пользователь повернул устройство ИЛИ нажал клавишу возврата). –

+0

Это мой адаптер, если вы можете мне помочь http://stackoverflow.com/questions/24574733/asynktask-nullpointerexception-pressing-back-button. –

Смежные вопросы