Использование кнопки «Назад» в Android внутри ActivityGroup

Я разрабатываю приложение с помощью TabHost. Я использую кнопку «Назад» по умолчанию для Android, чтобы вернуться к предыдущей активности из текущей активности, переопределив метод onBackPressed() внутри ActivityGroup каждой вкладки.

Теперь проблема в том, что в одном из моих действий у меня есть EditText, который фокусируется при запуске действия. Затем, если я нажму назад, он не перейдет к предыдущей активности, а закроет приложение. При поиске проблемы в Интернете я обнаружил, что когда EditText получает фокус, который является дочерним представлением представления активности, фокус потери активности, а затем, если нажата кнопка «Назад», из-за отсутствия фокуса на текущем действии он закрывает применение. Тем не менее я немного запутался или, можно сказать, не совсем понял проблему.

Итак, как бы то ни было, мне удалось установить и удалить фокус над EditText во время выполнения с помощью кода. Но все же теперь, поскольку EditText не имеет фокуса, если нажать кнопку «Назад», приложение закроется. Я действительно смущен тем, что на самом деле происходит. Итак, если у кого-то есть какие-либо идеи или решение проблемы, пожалуйста, помогите в этом вопросе. Я буду очень признателен. Спасибо.


person Junaid    schedule 11.01.2012    source источник


Ответы (3)


Вы можете переопределить это поведение, добавив Key Listener в свой EditText. Попробуйте это,

    name_edit.setOnKeyListener(new OnKeyListener() {

        public boolean onKey(View v, int keyCode, KeyEvent event) {

            if (event.getAction() == KeyEvent.ACTION_DOWN
                    && event.getKeyCode() == KeyEvent.KEYCODE_BACK) {
                Log.i("Back event Trigered", "Back event");
                activitygroup.back();
            }
            return false;
        }
    });
person Andro Selva    schedule 11.01.2012
comment
можете ли вы вставить свой код, который имеет этот текст редактирования. См. это обычно происходит с edittext и webview. позаботьтесь о том, чтобы вы обратились ко всему с ключевым слушателем - person Andro Selva; 11.01.2012
comment
ну, в моей деятельности я объявил несколько TextView, EditText и Button. создал объект, используя findViewById(), взяв идентификатор из макета xml. Также установите onclicklistener для кнопок, вот и все. Ничего больше. Но все еще занимаюсь проблемой. - person Junaid; 12.01.2012
comment
Это то, что я обычно делаю для своей группы действий. Меня устраивает. Извините, если вам не поможет. Пожалуйста, дважды проверьте свой код. - person Andro Selva; 12.01.2012
comment
Ой, мой плохой. На самом деле работает. Я забыл изменить некоторый код, который я написал для изменения фокуса ранее. Для этого он не работал. Я перепроверил свой код после того, как вы предложили, и нашел эту проблему. После того, как сделал их правильно, работает нормально. Neways Большое спасибо за вашу помощь ... :D Я действительно ценю это .... :) Кстати, еще одна вещь, может ли та же проблема возникнуть в WebView ?? - person Junaid; 12.01.2012
comment
да. и особенно с устройствами с трекболом. Действовать наверняка. Добро пожаловать всегда - person Andro Selva; 12.01.2012

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

@Override
    public void onBackPressed() {
        onKeyDown(KeyEvent.KEYCODE_BACK, new KeyEvent(KeyEvent.ACTION_DOWN,KeyEvent.KEYCODE_BACK));
        super.onBackPressed();
    }
person NikhilReddy    schedule 11.01.2012
comment
Ну, я сделал что-то вроде этого. Кнопка «Назад» отлично работает в большинстве действий, кроме тех, представление которых содержит EditText. Как я сказал на свой вопрос после поиска в сети, кажется, что это проблема фокусировки. - person Junaid; 11.01.2012

попробуй это

 public void onBackPressed() {

      startActivity(new Intent(currentActivity.this, previousActivity.class));
        finish();
    }
person Ranjit Mishra    schedule 11.01.2012
comment
Так как я использую ActivityGroup для каждой вкладки внутри TabHost , onBackPressed должен быть реализован в родительском классе (ActivityGroup), а не в дочерних классах (Activity). Кроме того, startActivity(INTENT) не будет запускать активность в ActivityGroup. Так что не могу использовать это. - person Junaid; 12.01.2012