Hello everyone, I have an adapter and there or already in the model I try to display a dialog to confirm or delete a user action but an error constantly crashes, I found only a bunch of similar things in Google that say to use getapplicationContext () - but this does not help I did not call the context. Please tell me how to solve the problem, here is the adapter code and errors:
public class ContactAdapter extends RecyclerView.Adapter<ContactAdapter.ContactViewHolder> { private Context context; private List<Item> itemList; private SavedModel savedModel; public ContactAdapter(Context context, List<Item> itemList, SavedModel savedModel) { this.context = context; this.itemList = itemList; this.savedModel = savedModel; } @NonNull @Override public ContactViewHolder onCreateViewHolder(@NonNull ViewGroup viewGroup, int i) { return new ContactViewHolder(LayoutInflater.from(context).inflate(R.layout.item_search_contact, viewGroup, false)); } @SuppressLint("SetTextI18n") @Override public void onBindViewHolder(@NonNull ContactViewHolder contactViewHolder, @SuppressLint("RecyclerView") final int position) { contactViewHolder.setIsRecyclable(false); contactViewHolder.tvContactName.setText(itemList.get(position).getLastname() + " " + itemList.get(position).getFirstname()); contactViewHolder.tvContactDescription.setText(itemList.get(position).getPlaceOfWork()); contactViewHolder.imgSave.setOnClickListener(view -> { View view1 = LayoutInflater.from(context).inflate(R.layout.message_dialog, null); AlertDialog.Builder dialog = new AlertDialog.Builder(context.getApplicationContext()).setTitle("123").setView(view1); dialog.show(); //= new AlertDialog.Builder(context) //.setTitle("Зберегти в обраних?") // .setView(view1); //.setPositiveButton(R.string.yes, (dialogInterface, i) -> savedModel.addObject(itemList.get(position))) //.setNegativeButton(R.string.cancel, (dialogInterface, i) -> Toast.makeText(context, "Додавання відмінено!", Toast.LENGTH_SHORT).show()) //.show(); }); contactViewHolder.imgOpenPdf.setOnClickListener(view -> openPdfByLink(itemList.get(position).getLinkPDF())); } @Override public int getItemCount() { return itemList.size(); } private void openPdfByLink(String link){ Intent intent = new Intent(context, SearchActivity.class); intent.putExtra("link", link); context.startActivity(intent); } public class ContactViewHolder extends RecyclerView.ViewHolder{ private TextView tvContactName, tvContactDescription; private ImageView imgOpenPdf, imgSave; public ContactViewHolder(@NonNull View itemView) { super(itemView); tvContactDescription = itemView.findViewById(R.id.tvContactDescription); tvContactName = itemView.findViewById(R.id.tvContactName); imgOpenPdf = itemView.findViewById(R.id.imvOpenPdf); imgSave = itemView.findViewById(R.id.imvAddToLike); } } } Here is the error code:
E/AndroidRuntime: FATAL EXCEPTION: main Process: com.example.divinkas.searchcontacts, PID: 4074 android.view.WindowManager$BadTokenException: Unable to add window -- token null is not for an application at android.view.ViewRootImpl.setView(ViewRootImpl.java:644) at android.view.WindowManagerGlobal.addView(WindowManagerGlobal.java:261) at android.view.WindowManagerImpl.addView(WindowManagerImpl.java:69) at android.app.Dialog.show(Dialog.java:286) at android.app.AlertDialog$Builder.show(AlertDialog.java:951) at com.example.divinkas.searchcontacts.Adapter.ContactAdapter.lambda$onBindViewHolder$0(ContactAdapter.java:55) at com.example.divinkas.searchcontacts.Adapter.-$$Lambda$ContactAdapter$vWBPDFnY457u-Yc5wbC64H9_gx4.onClick(lambda) at android.view.View.performClick(View.java:4463) at android.view.View$PerformClick.run(View.java:18770) at android.os.Handler.handleCallback(Handler.java:808) at android.os.Handler.dispatchMessage(Handler.java:103) at android.os.Looper.loop(Looper.java:193) at android.app.ActivityThread.main(ActivityThread.java:5292) at java.lang.reflect.Method.invokeNative(Native Method) at java.lang.reflect.Method.invoke(Method.java:515) at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:824) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:640) at dalvik.system.NativeStart.main(Native Method) Maybe the problem is that I use moxy and the adapter is created in the presenter, from where it takes its context?