нужна помощь в кнопку Home в Android - PullRequest
2 голосов
/ 19 мая 2011

привет всем, что я хочу перехватить мою кнопку Home.
я хочу, чтобы всякий раз, когда я нажимал кнопку «Домой», я хотел отобразить диалоговое окно «Предупреждение» для «Вы уверены, что хотите выйти». если да, то завершите упражнение, иначе ничего не делайте. Я должен знать, что
всякий раз, когда мы нажимаем кнопку «Домой», выполняются следующие обратные вызовы по порядку.

onSaveInstanceState (Bundle outState)

onPause ()

onStop ()

Итак, у меня есть метод overRide onSaveInstanceState и я установил там свой код диалога оповещения, но это дает мне исключение при диалоге. Пожалуйста, помогите друзьям. Приведи меня в порядок ... об этом.

ОБНОВЛЕНО:

@Override
public void onSaveInstanceState(Bundle savedInstanceState) {
boolean flag = displayAlertDialog();
        if(flag){
             this.finish();
         super.onSaveInstanceState(savedInstanceState);
        }
}  

Метод displayAlertDialog:

private boolean isExit = false;
public boolean displayAlertDialog()
    {
        //final boolean flag=true;
        int a = 0;
        AlertDialog.Builder alt_bld = new AlertDialog.Builder(this);
        alt_bld.setMessage("Are you sure you want to Exit?")
        .setPositiveButton("Yes", new DialogInterface.OnClickListener() {

            @Override
            public void onClick(DialogInterface dialog, int which) {
                // TODO Auto-generated method stub
                isExit = true;
            }

        })
        .setNegativeButton("No", new DialogInterface.OnClickListener() {
            @Override
            public void onClick(DialogInterface dialog, int which) {
                // TODO Auto-generated method stub
                isExit = false;
                dialog.cancel();
            }
        });
        alt_bld.show();
    return isExit;

    }

Ответы [ 3 ]

3 голосов
/ 19 мая 2011

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

1 голос
/ 19 мая 2011

AFAIK KeyCode.KEYCODE_HOME никогда не передается в Activty / Dialog при нажатии клавиши HOME, клавиша HOME перехватывается в рамках, чтобы гарантировать, что домашний экран / активность, зарегистрированная для "android.intent.category.HOME", всегда находится в фокусе.

Если в приложениях разрешен перехват ключа HOME, существует вероятность, что злое приложение может помешать пользователю выйти из приложения и использовать функции телефона.

0 голосов
/ 19 мая 2011

Попробуйте этот помощник ....

 @Override 
    public boolean onKeyDown(int keyCode, KeyEvent event) { 
        if ((keyCode == KeyEvent.KEYCODE_HOME)) {    
         Log.d(this.getClass().getName(), "home button pressed");   
      }  
       return super.onKeyDown(keyCode, event);
     } 
...