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