2014-01-13 3 views
0

Я реализую пользовательскую пусковую установку. У меня есть два вида деятельности: активность A с launchMode: singleInstance или singleTask и активность B.Проблема с launchMode Activity

Деятельность A является основным экраном. Есть 2 случая:

  • Если я установил ActivityA launchMode: singleTask, я вызываю Activity B из Activity A (это прекрасно). В действии B, если я нажимаю клавишу «Главная», чтобы вернуться к основному экрану, тогда экран пуст (нет ничего ...).
  • Если я установил ActivityA launchMode: singleInstance, я вызываю Activity B из Activity A, после чего он показывает пустой экран после перехода в Activity B (в этом случае я нажимаю клавишу Home на главный экран bac, он отлично работает) ,

Итак, как это решить? Я хочу: Вызвать активность B из Activity A, затем перейти непосредственно к Activity B, и когда я нажимаю клавишу Home, она возвращается на главный экран (Activity A).

ответ

1

в активности B вы можете использовать следующий код с задней кнопкой

@Override 
public boolean onKeyDown(int keyCode, KeyEvent event) { 
    if (keyCode == KeyEvent.KEYCODE_BACK) { 
     Intent a = new Intent(this,A.class); 
     a.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); 
     startActivity(a); 
     return true; 
    } 
    return super.onKeyDown(keyCode, event); 
}  

если вы хотите работать с домашним ключом, чем переопределения Home ключ с следующим кодом

@Override 
    public boolean onKeyDown(int keyCode, KeyEvent event) { 
     if(keyCode == KeyEvent.KEYCODE_HOME) 
     { 
      //yours code action 
return true; 
     } 
     if(keyCode==KeyEvent.KEYCODE_BACK) 
     { 
      //yours code action 
return true; 
     } 
     return super.onKeyDown(keyCode, event); 
    } 

пожалуйста, вы можете попробовать с этим а

@Override 
    public boolean dispatchKeyEvent(KeyEvent event) { 

     if ((event.getKeyCode() == KeyEvent.KEYCODE_HOME) && isLock) { 
      //yours code 
      return true; 
     } 
     else 
      return super.dispatchKeyEvent(event); 
    } 
+0

Спасибо за ваш ответ. В этом случае вы устанавливаете SingleTask или SingleInstance? Больше, я только проблема с ключом дома. Я добавил onKeyDown в Activity B с keyCode = KeyEvent.KEYCODE_HOME, но эта проблема еще не работает. – user1573559

+0

пожалуйста, написать код, как это ... @ Override общественное логическое OnKeyDown (INT KEYCODE, KeyEvent событие) { если (KEYCODE == KeyEvent.KEYCODE_HOME) {// Yours код возвращение истинного; } return super.onKeyDown (keyCode, event); } –

+0

обновлен ответ ..пожалуйста, попробуйте еще раз. –

0

попробовать этот один ... удалить Laun атрибут chmode из манифеста, а затем вызовите активность B от активности Метод с использованием отделки() следующим образом:

finish(); 
      Intent intent=new Intent(getApplicationContext(),ActivityB.class); 
      startActivity(intent); 
+0

Sr, он не работает – user1573559

+0

kk ... если вы не можете убрать ур код snippnet ..wat именно вы r luking для .. –

+0

Как я прошу выше. Есть 2 случая: Если я установил ActivityA launchMode: singleTask/singleTast/standard, я вызываю Activity B из Activity A (это прекрасно). В действии B, если я нажимаю клавишу «Главная», чтобы вернуться к основному экрану, тогда экран пуст (нет ничего ...). Как это исправить? Если я установил ActivityA launchMode: singleInstance, я вызываю Activity B из Activity A, затем он показывает пустой экран (как его исправить), после перехода на Activity B (в этом случае я нажимаю клавишу Home to back main экран, он отлично работает). – user1573559

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