Не завершено диалоговое окно темы использования действия

#android

#Android

Вопрос:

вот мой код

 @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        AlertOn();
    }

    private void AlertOn() {    
         alertbox = new AlertDialog.Builder(this).create();
        alertbox.setIcon(R.drawable.icon);
        alertbox.setTitle(getIntent().getStringExtra("Title"));
        alertbox.setMessage(getIntent().getStringExtra("Message"));
        alertbox.setButton("Ok", new DialogInterface.OnClickListener() {
            public void onClick(final DialogInterface dialog, int arg1) {               
                dialog.dismiss();
                Intent startActivity = new Intent(); 
                startActivity.setClass(getApplicationContext(), moontech.fax.mFax.class); 
                startActivity.setAction(NotificationAlert.class.getName()); 
                startActivity.setFlags( 
                        Intent.FLAG_ACTIVITY_NEW_TASK 
                        | Intent.FLAG_ACTIVITY_EXCLUDE_FROM_RECENTS);      
                 startActivity(startActivity);
                 finish();
            }
        });

        alertbox.show();        
    }
  

и в файле manifeast объявляем

 <activity android:name="com.demo.notificationalert"
            android:theme="@android:style/Theme.Dialog" 
            android:screenOrientation="portrait" />
  

но когда отображается диалоговое окно и без нажатия ok, я использую «Назад с устройства», тогда это действие не завершено.

Комментарии:

1. Вы рассматривали возможность переопределения onPause() ? В нем вы можете вызвать finish() , оно будет вызвано, как только вы нажмете кнопку «Назад».

Ответ №1:

По умолчанию, когда отображается диалоговое окно и вы нажимаете кнопку «Назад», оно закрывает ваше диалоговое окно. Вы можете переопределить метод onKeyDown в своем activity следующим образом:

 @Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
    if (keyCode == KeyEvent.KEYCODE_BACK) {
        finish();
    }
    return super.onKeyDown(keyCode, event);
}
  

На этом ваша активность будет завершена. Надеюсь, это поможет.