2012-05-23 2 views
0

У меня проблема с кнопкой возврата. Он не работает. Когда я перехожу от первого занятия к второму и от второй до третьей кнопки назад, вы не хотите работать. Я использовал:Кнопка Android и обратно

@Override 
public boolean onKeyDown(int keyCode, KeyEvent event) { 
    if (keyCode == KeyEvent.KEYCODE_BACK) { 
     moveTaskToBack(true); 
     Log.v("Co1s", "Cos1"); 
     return true; 
    } 
    return super.onKeyDown(keyCode, event); 
} 

Но когда я нажимаю на кнопку Я получаю только:

05-23 10: 45: 57.863: W/KeyCharacterMap (238): Не удается открыть файл keycharmap 05 -23 10: 45: 57.863: W/KeyCharacterMap (238): Ошибка при загрузке keycharmap файл '/system/usr/keychars/pm8058-keypad.kcm.bin'. hw.keyboards.0.devname = 'pm8058-клавиатура' 05-23 10: 45: 57,863: Вт/KeyCharacterMap (238): Использование по умолчанию раскладки клавиатуры: /system/usr/keychars/qwerty.kcm.bin

И этот вход в эту функцию не отображается в журналах. Зачем?

Edit: acrivity nr1:

protected void onCreate(Bundle savedInstanceState) { 
     // TODO Auto-generated method stub 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.services_description); 

     back_button = (Button) findViewById(R.id.service_back_button); 
     back_button.setOnClickListener(new View.OnClickListener() { 

      public void onClick(View v) { 
       intent = new Intent(services_description.this, service.class); 
       TabActivityGroup parentActivity = (TabActivityGroup)getParent(); 
       parentActivity.startChildActivity("menu_activity", intent);  
       finish(); 
      } 
     }); 
    } 
    @Override 
    public boolean onKeyDown(int keyCode, KeyEvent event) { 
     if (keyCode == KeyEvent.KEYCODE_BACK) { 
      Log.v("Co1s", "Cos1"); 
     } 
     return super.onKeyDown(keyCode, event); 
    } 

и второй:

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    // TODO Auto-generated method stub 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.service); 

    title = (TextView) findViewById(R.id.serviceTitle); 
    description = (TextView) findViewById(R.id.serviceDescription); 
    nextPage = (ImageView) findViewById(R.id.serviceNextPage); 
    back_button = (Button) findViewById(R.id.service_back_button); 


    nextPage.setOnClickListener(new View.OnClickListener() { 

     public void onClick(View v) { 
      intent = new Intent(service.this, services_description.class); 
      TabActivityGroup parentActivity = (TabActivityGroup)getParent(); 
      parentActivity.startChildActivity("menu_activity", intent);  

     } 
    }); 
    back_button.setOnClickListener(new View.OnClickListener() { 

     public void onClick(View v) { 

      finish(); 

     } 
    }); 
} 
@Override 
public void onBackPressed() { 
    Log.v("Cos", "Cos"); 
    finish(); 
} 
@Override 
public boolean onKeyDown(int keyCode, KeyEvent event) { 
    if (keyCode == KeyEvent.KEYCODE_BACK) { 
     moveTaskToBack(true); 
     Log.v("Co1s", "Cos1"); 
     return true; 
    } 
    return super.onKeyDown(keyCode, event); 
} 
+0

В какой из двух ваших кнопок кнопка «Назад» не работает? Если вы в первый раз подключили прослушиватель 'onClick' к кнопке« Назад »и в то же время вы переопределите' onKeyDown'. И во втором действии вы переопределяете как 'onBackPressed', так и' onKeyDown'. Все это кажется немного подозрительным ... Похоже, вы делаете много разных вещей, не зная, что вы делаете, поэтому мой совет: удалите весь «пух» и начните с максимально простого примера. Получите обратную кнопку, и затем добавьте один обработчик событий в то время, чтобы также запустить журнал. – Nailuj

ответ

0

Вы не должны ничего делать, чтобы получить кнопку назад работать. Просто удалите весь блок if (keyCode == KeyEvent.KEYCODE_BACK) и т. Д., И все должно быть хорошо.

Если вы по какой-то причине необходимо войти, когда кнопка назад нажата, я думаю вы могли бы сделать это следующим образом:

@Override 
public boolean onKeyDown(int keyCode, KeyEvent event) { 
    if (keyCode == KeyEvent.KEYCODE_BACK) { 
     Log.v("Co1s", "Cos1"); 
    } 
    return super.onKeyDown(keyCode, event); 
} 

Важно то, что вы передаете на «обработку» из нажмите кнопку на переопределенном методе и позвольте самой ОС Android вернуться к предыдущему действию.

+0

Это не работает. Я не получаю никакого журнала. Только это предупреждение, но только когда я сначала нажимаю кнопку. – edi233

+0

@ edi233: Но ваша задняя кнопка работает, как ожидалось, т. Е. Возвращается к предыдущему действию? Я предполагаю, что здесь основная часть ... И вы говорите, что не получаете записи в журнале: пытались ли вы установить точку останова в методе 'onKeyDown'? Что происходит, когда вы запускаете в режиме отладки? Какова ценность 'keyCode' и т. Д.? Вы должны дать нам немного больше информации ... – Nailuj

+0

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

0

Вы можете переопределить onBackPressed() в вашей деятельности, а не перекрывая onKeyDown()

+0

все еще не работает. – edi233

1

вы можете изменить кнопку назад метод onBackPressed() также вы можете ты intent в этом методе, чтобы переместить какую-либо деятельность в приложении. Больше вы можете получить от onKeyDown() or onBackPressed() по этой ссылке. Это предоставит вам, как мы можем это сделать.

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