Закрыть диалоговое окно пользовательского оповещения при нажатии кнопки «Назад» аппаратного обеспечения в Android

У меня проблема с кнопкой «Назад» на оборудовании. В моей основной деятельности у меня есть одно представление списка (скажем, 1). Когда я нажимаю на элемент этого представления списка (1), появляется одно диалоговое окно предупреждений, в этом диалоговом окне предупреждений есть одно представление списка (скажем, 2). Данные этого представления списка (2) повторяются, когда я нажимаю аппаратную кнопку «Назад». Я также поместил изображение отмены в это диалоговое окно предупреждения, чтобы закрыть его, когда я нажимаю это изображение отмены, данные не повторяются. Я пробовал разные методы onResume(), onPause(), onDestroy(), onRestart(), чтобы очистить массив для представления списка (2), но ничего не работает. Вот мой код...

case LIST_DIALOG :
LayoutInflater inflater2 = LayoutInflater.from(this);
View dialogview1 = inflater2.inflate(R.layout.listdialog, null);
AlertDialog.Builder dialogbuilder2 = new AlertDialog.Builder(this);
dialogbuilder2.setView(dialogview1);
dialogDetails = dialogbuilder2.create();


case LIST_DIALOG:

    AlertDialog alertDialog1 = (AlertDialog) dialog;

    // Cancel Alert Dialog
    ImageView ivCancel = (ImageView) alertDialog1.findViewById(R.id.imgCancel);
    ivCancel.setOnClickListener(new OnClickListener() {

        @Override
        public void onClick(View v) {
            // TODO Auto-generated method stub
            dismissDialog(LIST_DIALOG); 
            arr2.clear();
        }
    });

    // Friend List
    showFriendList();
    break;

// Данные представления списка вставляются с помощью этой функции.

            @Override
            public void onCompleted(List<GraphUser> users, Response response) {
                // TODO Auto-generated method stub

            //  arr2 = new ArrayList<String>();
                for(GraphUser user : users)
                {
                    arr2.add(user.getName());
                }

                adapter2 = new ArrayAdapter<String>(getBaseContext(), R.layout.single_row, R.id.txt,arr2);
                lvDialog.setAdapter(adapter2);
                lvDialog.setChoiceMode(ListView.CHOICE_MODE_MULTIPLE);
                adapter2.notifyDataSetChanged();

                itemCount = lvDialog.getCount();
                Toast.makeText(getBaseContext(), "" + itemCount, 1000).show();

            }
        });


        }

// Я пробовал эти методы, но ничего не работает...

@Override
      public void onResume()
      {
          super.onResume();
          ShowSavedFiles();
          arr2.clear();

      }

    @Override
    public void onPause()
    {
        super.onPause();
        arr1.clear();
        arr2.clear();
    }


    @Override
    public void onBackPressed() {
    //super.onBackPressed();
    // finish your Activity

    arr2.clear();

    return;
    }

  @Override
   public boolean onKeyDown(int keyCode, KeyEvent event) {
   if (keyCode == KeyEvent.KEYCODE_BACK) {
        arr2.clear();
        dismissDialog(LIST_DIALOG); 

    }
    return false;
}

person Looking Forward    schedule 07.08.2013    source источник


Ответы (1)


Я не уверен, но может помочь добавление следующего кода в ваш метод onKeyDown:

return super.onKeyDown(keyCode, event);
person arshu    schedule 07.08.2013