Как я могу отменить оповещение после нажатия кнопки «Назад»

У меня есть активность, в которой вызывается класс адаптера. В классе адаптера после нажатия на элемент открывается диалоговое окно. Теперь я не могу понять, закрыть это диалоговое окно после нажатия кнопки «Назад».

Вот мой класс активности:

public class MainActivity extends AppCompatActivity{ protected void onCreate(Bundle savedInstanceState) { // fetching the required data // blogs is recyclerview blogs.setAdapter(new BlogAdapter(MainActivity.this,blogArrayList)); } @Override public void onBackPressed() { //not printed Log.i("Back button pressed ","MainActivity"); } @Override public boolean onKeyDown(int keyCode, KeyEvent event) { //not printed Log.i("On key down ","Main Activity"); return super.onKeyDown(keyCode, event); } 

}

Класс адаптера

 class BlogAdapter(var mcontext: Context, var post:ArrayList<Blog>): RecyclerView.Adapter<RecyclerView.ViewHolder>() { override fun onBindViewHolder(holder: RecyclerView.ViewHolder?, position: Int) { holder.itemView.setOnClickListener { openDialog(post.get(position),mcontext) } } private fun openDialog(post: Blog?,context:Context) { val layoutInflaterAndroid = LayoutInflater.from(context) val mView = layoutInflaterAndroid.inflate(R.layout.individual_blog, null) val alertDialogBuilder = AlertDialog.Builder(ContextThemeWrapper(context, R.style.AppFullScreen_Dialog_Theme)) alertDialogBuilder.setView(mView) if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.N) { mView.title_blog.text = Html.fromHtml(post?.postTitle,Html.FROM_HTML_MODE_LEGACY) } else { @Suppress("DEPRECATION") mView.title_blog.text=Html.fromHtml(post?.postTitle) } val alertDialog = alertDialogBuilder.create() alertDialog!!.show() alertDialogBuilder.setOnKeyListener { dialog, keyCode, event -> Log.i("Set On Key Listener ","dialog") if (keyCode==KeyEvent.KEYCODE_BACK){ alertDialog.dismiss() } true } } } 

Вы можете показать диалог в своей деятельности, используя контекст в адаптере, а затем проверить метод onBackPressed, если ваш диалог виден, а затем отключить его еще super.onBackPressed ()

Это должно помочь.

  @Override public void onBackPressed() { dialog.dismiss(); } 
Intereting Posts
Наследование дженериков Котлина – несоответствие типов Настройка кинжала 2 при условии модернизации Проверьте, работает ли моя активность в MultiWindowMode или не используется Kotlin Адаптер связывания Пикассо «сообщение было утечено» Могу ли я написать sampleVideoView? = findViewById <VideoView> (R.id.videoView) в Котлине? ClassNotFoundException при последующих сборках после преобразования MainActivity в Kotlin Преобразование API библиотеки Android в Kotlin Создать метод с общим параметром для повторных действий Как присоединиться к двум RxJava2 Obvervables по ключу? Являются ли столетние нитки Котлина безопасными? Как группировать предметы Arraylist времени в HashMap в Котлине? Дооснащение – пропустите два параметра Kotlin, Mockito и Android Test Instrumentation. Свойство Lateinit не было инициализировано Элементы типа «subs» не могут быть использованы. response: -1010: Неправильная попытка потребления Как проверить код Kotlin при компиляции на JavaScript?