【问题标题】:Getting Null point Exception when Clicking Delete Button in RecyclerView在 RecyclerView 中单击删除按钮时出现空指针异常
【发布时间】:2020-06-14 02:27:57
【问题描述】:
 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(View.java:7102) 在 android.view.View.access$3500(View.java:801) 在 android.view.View$PerformClick.run(View.java:27336) 在 android.os.Handler.handleCallback(Handler.java:883) 在 android.os.Handler.dispatchMessage(Handler.java:100) 在 android.os.Looper.loop(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) 在 com.android.internal.os.ZygoteInit.main(ZygoteInit.java:930)

【问题讨论】:

  • context 是什么?
  • 确认您是否在适配器的recyclerview 项目中设置了正确的findviewbyId 按钮
  • 上下文上下文;我设置了正确的按钮,
  • 您是否在 MyAdapter 构造函数中从您的活动/片段设置上下文。
  • 我是从片段中设置的

标签: java android delete-file


【解决方案1】:

看起来您在适配器类中作为参数传递的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();
       }
    }

【讨论】:

    猜你喜欢
    • 2012-03-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-03-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多