2013-03-07 2 views
4

Мое приложение состоит из одного вида деятельности. Когда я отказываюсь, ничего не происходит, почему это? Я думал, что это убьет приложение. Если я нажму домой, приложение будет указано в фоновом режиме по желанию. Это просто кнопка, которая ничего не делает. Что я мог сделать, чтобы повлиять на это?Android back key ничего не делает?

Я прочитал в документации:

public void onBackPressed() 

Вызывается, когда активность обнаружена пресс пользователя из заднего ключа. Реализация по умолчанию просто завершает текущую активность , но вы можете переопределить это, чтобы делать все, что хотите.

Я не переопределил это.

Вот то, что было сказано, перекрывая ключи:

public boolean dispatchKeyEvent(KeyEvent event) { 
    if (event == null || event.getAction() == KeyEvent.ACTION_UP) { 

     return false; 
    } 
    if(event.getKeyCode() == KeyEvent.KEYCODE_DEL){ 

    mEntry.setOnFocusChangeListener(new OnFocusChangeListener(){ 
     @Override 
     public void onFocusChange(View v,boolean hasFocus){ 
       /* When focus is lost check that the text field 
       * has valid values. 
       */ 
       if (!hasFocus && !mEntry.getText().toString().trim().equals("")) { 

        mSession.appendToEmulator(cmdLeft, 0, cmdLeft.length); 
        mSession.appendToEmulator(cmdErase, 0, cmdErase.length); 

        Log.d(TAG, "in inner delete"); 
       } 
       else {mEntry.setText(" "); 
       } 
     }   
    }); 


    Log.d(TAG, "in delete in delete in delete in delete"); 
    try { 
     sendOverSerial("\b".getBytes("UTF-8")); 
    } catch (UnsupportedEncodingException e) { 
     e.printStackTrace(); 
    } 
} 

    return super.dispatchKeyEvent(event); 
}; 

Другой отрывок из OnCreate:

mEntry = (EditText) findViewById(R.id.term_entry); 

     mEntry.setOnEditorActionListener(new TextView.OnEditorActionListener() { 

      @Override 
      public boolean onEditorAction(TextView v, int actionId, 
        KeyEvent event) { 

       /* Ignore enter-key-up events. */ 
       if (event != null && event.getAction() == KeyEvent.ACTION_UP) { 

        return false; 
       } 
+0

, если мы не видим ваш код, мы не можем найти это;) – bofredo

+0

да, вы должны переопределить его, и если вы находитесь в основной активности, то андроидная кнопка os back сама завершает работу – Shiv

+0

Ну код несколько тысячи строк, мне просто интересно, какие способы вы знаете, что могло повлиять на это? Полагаю, я могу переопределить его и закончить, но он уже должен это делать. – Paul

ответ

3

Без вашего фактического кода это diffucult сказать, но я возьму смелое предположение и сказать, что где-то в вашем Activity вы переопределили onKeyDown или onKeyUp и KeyEvent.KEYCODE_BACK обрабатывается там. Я испытал поведение в своем собственном приложении, которое, если onKeyDown обрабатывает обратную клавишу и возвращает true, onBackPressed() никогда не получит вызов.

+0

Я уже возился с keyEvents, и я выставляю код, с которым я имею дело. – Paul

+0

Хм, ты не перевернул задний ключ в любом месте, где я вижу. Вы пытаетесь явно вызвать 'super.onBackPressed', когда в' dispatchKeyEvent' нажата обратная клавиша? – Thrakbad

+0

Нет, я не пробовал, я только обрабатывал удаление там. Я просто попробовал ответить ниже, но метод никогда не называется. Я попробую это сейчас спасибо. – Paul

Смежные вопросы