2012-01-11 4 views
1

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

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

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

ответ

1

Вы можете переопределить это поведение, добавив 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; 
     } 
    }); 
+0

Не работает. :( – Junaid

+0

Можете ли вы вставить свой код, который имеет этот текст? Посмотрите, как это обычно происходит с edittext и веб-просмотром. Посмотрите, что вы все обратились ко всем с прослушивателем клавиш –

+0

ну, в моей деятельности я объявил несколько TextView, EditText & Button. объект, используя findViewById(), берущий id из макета xml. Также установите onclicklistener для кнопок, thats it. Ничего другого. Но все еще проблема. – Junaid

0

попробовать это ..

@Override 
    public void onBackPressed() { 
     onKeyDown(KeyEvent.KEYCODE_BACK, new KeyEvent(KeyEvent.ACTION_DOWN,KeyEvent.KEYCODE_BACK)); 
     super.onBackPressed(); 
    } 
+0

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

-1

попробовать этот

public void onBackPressed() { 

     startActivity(new Intent(currentActivity.this, previousActivity.class)); 
     finish(); 
    } 
+0

Ну, поскольку я использую ActivityGroup для каждой вкладки внутри TabHost, onBackPressed должен быть реализован в родительском классе (ActivityGroup), а не в дочерних классах (Activity). Кроме того, startActivity (INTENT) не запускает активность в ActivityGroup. Так что не могу этого использовать. – Junaid