Поймать событие нажатия кнопки назад андроида, когда showint диалоговое окно / список счетчика? - PullRequest
0 голосов
/ 27 марта 2012

Мне нужно захватить событие, когда мое приложение показывает диалоговое окно, и я нажимаю кнопку возврата устройства.

Ну, это определенно не диалог.Это выпадающий список для моего счетчика.

Я попробовал:

public boolean onKeyDown(int keyCode, KeyEvent event) 
{
    if (keyCode == KeyEvent.KEYCODE_BACK)
    {

    Toast myToast = Toast.makeText(getApplicationContext(), "back putton pressed", 1);
    myToast.show();

    }

    // Call super code so we dont limit default interaction
    super.onKeyDown(keyCode, event);

    return true;
}

Не работает.

Я также попробовал:

public void onBackPressed()
{


    Toast myToast = Toast.makeText(getApplicationContext(), "back putton pressed", 1);
    myToast.show();

}

Iдаже попробовал это с переопределением.Так что ни одно из перечисленных выше решений не работает для меня.Я нашел оба из них на stackoverflow, но по какой-то причине они не работают для меня.Конечно, они работают, когда теперь отображается диалоговое окно, но когда ... они не запускаются.

Есть идеи?

Итак, мой

Ответы [ 5 ]

3 голосов
/ 27 марта 2012

Общий способ определить, было ли отменено диалоговое окно (нажата кнопка «Назад»), - это реализовать OnCancelListener, хотя не совсем уверен, работает ли он на счетчиках!

3 голосов
/ 27 марта 2012

Попробуйте

 if (keyCode == KeyEvent.KEYCODE_BACK)
{

    Toast myToast = Toast.makeText(getApplicationContext(), "back putton pressed", 1);
   myToast.show();
    return true;
}
2 голосов
/ 27 марта 2012

попробуйте это ...

    public boolean onKeyDown(int keyCode, KeyEvent event) 
    {
        if (keyCode == KeyEvent.KEYCODE_BACK)
        {

        Toast myToast = Toast.makeText(getApplicationContext(), "back putton pressed", 1);
        myToast.show();
   new Handler().postDelayed(new Runnable{
    public void run(){
              finish();
        }
    }, 1000);
        }
    else{
        // Call super code so we dont limit default interaction
        super.onKeyDown(keyCode, event);
    }

        return true;
    }
2 голосов
/ 27 марта 2012

см.

@Override 
    public boolean onKeyDown(int keyCode, KeyEvent event) {
        //Handle the back button
        if(keyCode == KeyEvent.KEYCODE_BACK) {
            //write your code...
        }
    }
1 голос
/ 27 марта 2012

попробуй использовать dismiss listener.диалоговое окно может быть закрыто нажатием кнопки или клавиши возврата, и с помощью этого слушателя вы можете узнать, нажал ли пользователь кнопку или клавишу возврата (вы можете прослушивать прослушиватель onClick в своем диалоговом окне, чтобы поймать нажатие кнопки диалога).

...