2013-05-21 3 views
1

сценария:Intent.FLAG_ACTIVITY_CLEAR_TOP в SherlockActivity не служит цели

У меня есть четыре вида деятельности: A, B, C and HomeActivity. A является моим launcher деятельности. Использую actionbarSherlock, поэтому у A, B и C есть опция menu в баре.

Течение:

A-> B-> C --**On submit in C**--> HomeActivity 

Теперь, когда я нажимаю Back кнопку на домашней деятельности, она восходит к activity B, как после нажатия кнопки Отправить в C, я использую

 Intent intent = new Intent(this, HomeActivity.class); 
    intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); //Shouldn't this clear A,B and C ?? 
    //intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); 
    startActivity(intent); 
      finish(); 

Но я хотел бы оставаться на HomeActivity только после отправки данных, а затем он был запущен.

Кроме того, если кнопка меню нажимается на A,B,C, то HomeActivity запускается и в этом случае, я хотел бы иметь поведение Back кнопку по умолчанию (то есть вернуться к деятельности, в которой была нажата кнопка меню)

Любые идеи о том, как это сделать: FLAG_ACTIVITY_CLEAR_TOP не служит цели!

(PS: HomeActivity не пусковая активность)

+0

проверить мой нижний ответ. – Maulik

ответ

1

Я думаю, что вы закончите Главная актив- ности, а вы идете в домашней деятельности -> активность A. При использовании ясно верхний флаг затем Начальном активность должен быть в вашем стеке. Убедитесь, что вы не закончили свою деятельность на дому.

А также поместите этот код в методKeyDown() в свою главную деятельность.

@Override 
    public boolean onKeyDown(int keyCode, KeyEvent event) { 
     if (keyCode == KeyEvent.KEYCODE_BACK) { 
      Log.e("onkeyDown>>>>", "Called>>>>>"); 
      finish(); 
     } 
     return super.onKeyDown(keyCode, event); 
    } 

проверить более подробную информацию проверить эту link:

Other Way

EDIT:

попытка поставить выше код в деятельности А.

удалить покрытие() метод из ваш код, как показано ниже:

Intent intent = new Intent(this, HomeActivity.class); 
    intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); //Shouldn't this clear A,B and C ?? 
    //intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); 
    startActivity(intent); 

И самое главное не Закончите активность Пусковой активности для Clear верхнего метода должен быть в стопке деятельности остается присутствует в устройстве.

Надеюсь, что это решит вашу проблему.

+0

Нет активности для входа в систему. Это всего лишь 4 мероприятия с активностью А в качестве пусковой установки, которая отличается от моей HomeActivity. –

+0

Просто измените действие входа в систему на главную. Проверьте мой отредактированный ответ. – Maulik

+0

Да, нет никакого способа, кроме как начать домашнюю деятельность в качестве пусковой установки. Благодарю. Вот +1 :) –

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