单击RecyclerView中的删除按钮时获取空点异常

问题描述 投票:0回答:1
 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:16800java.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)

java android delete-file
1个回答
0
投票

类似于您作为适配器类中的参数传递的context为null。另外,您也可以使用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();
       }
    }
© www.soinside.com 2019 - 2024. All rights reserved.