Получение исключения нулевой точки при нажатии кнопки «Удалить» в RecyclerView - PullRequest
0 голосов
/ 01 марта 2020
 public void onBindViewHolder(@NonNull final MyViewHolder myViewHolder, final int i) {
  myViewHolder.mName.setText(downModels.get(i).getName());
    myViewHolder.mDownload.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            DownloadTask();
        }
    });


myViewHolder.mDelete.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View view) {
        String pdfName = downModels.get(i).getName();

        if(pdfName != null) {
            pdfName = pdfName.replace("", "")+".pdf";

            File file = new File(context.getFilesDir(), pdfName);
            try {
                if (file.exists())
                    file.delete();
                Log.e("file","file"+file.getAbsolutePath());
            } catch (Exception e) {
                e.printStackTrace();
            }
        }

 }
});

При нажатии кнопки «Удалить» происходит сбой приложения.

2020-03-01 22: 50: 55.461 16800-16800 / com.solutions.rsaggarwal E / AndroidRuntime: ИСКЛЮЧИТЕЛЬНОЕ ИСКЛЮЧЕНИЕ: Основной процесс: com.solutions.rsaggarwal, PID: 16800 java .lang.NullPointerException: попытка вызвать виртуальный метод 'java .io.File android .content.Context.getFilesDir ()' для ссылки на пустой объект в com.solutions.rsaggarwal.MyAdapter $ 2.onClick (MyAdapter. java: 70) в android .view.View.performClick (View. java: 7125) в android .view.View.performClickInternal ( Просмотр. java: 7102) в android .view.View.access $ 3500 (просмотр. java: 801) в android .view.View $ PerformClick.run (просмотр. java: 27336) в android .os.Handler.handleCallback (Обработчик. java: 883) в android .os.Handler.dispatchMessage (Обработчик. java: 100) в android .os.Looper.l oop (Looper. java: 214) на android .app.ActivityThread.main (ActivityThread. java: 7356) на java .lang.reflect.Method.invoke (собственный метод) на com. android .internal.os.RuntimeInit $ MethodAndArgsCaller.run ( RuntimeInit. java: 492) по тел. android .internal.os.ZygoteInit.main (ZygoteInit. java: 930)

1 Ответ

1 голос
/ 01 марта 2020

Похоже, что context, который вы передаете в качестве аргумента в своем классе адаптера, равен нулю. В качестве альтернативы вы можете использовать контекст, прикрепленный к itemView, как показано ниже.

  Context context = myViewHolder.itemView.getContext();
  File file = new File(context.getFilesDir(), pdfName);
  try {
        if (file.exists())
                 file.delete();
         Log.e("file","file"+file.getAbsolutePath());
       } catch (Exception e) {
                e.printStackTrace();
       }
    }
...