2014-09-15 6 views
0

Я реализовал свой собственный задний стек, но я не уверен, что не так или что я могу улучшить, мой сценарий: у меня есть проект с двумя действиями, первый из которых - «SplashActivity» - где я загружаю некоторые сетевые данные - вторую, MainActivity.Android - Пользовательская кнопка возврата (задний стек)

Внутри моей основной деятельности У меня есть фрагмент и внутри этого фрагмента веб-просмотр.

кнопка Спина должна вести себя, как:

  • Когда пользователь не перемещаться внутри моей WebView, закройте приложение.

  • Когда пользователь просматривает веб-просмотр, используйте историю предыстории browswer.

Вот мой код:

@Override 
    public void onBackPressed() { 

    Log.d("lastfragment", String.valueOf(fragmentStack.lastElement().getId())); 

    if (fragmentStack.size() >= 2) { 

     // implement normal behavior? 

     Fragment activeFragment=fragmentStack.lastElement(); 
     FragmentTransaction ft = getFragmentManager().beginTransaction(); 
     activeFragment.onPause(); 
     ft.remove(fragmentStack.pop()); 

     Fragment returnToFragment=fragmentStack.lastElement(); 
     String name = returnToFragment.getClass().getName(); 
     if(name=="SplashScreen" || name=="LoginFragment"){ 

      // close? 

     } 
     else { 

      // implement normal behavior? 

      returnToFragment.onResume(); 
      ft.show(returnToFragment); 
      ft.commit(); 
     } 
    } 
    else { 
     //close ?? 

    } 

} 

ответ

0

Попробуйте этот код я надеюсь решить эту проблему.

FragmentTransaction fragmentTransaction = getSupportFragmentManager().beginTransaction(); 
fragmentTransaction.replace(FragmentTransaction.TRANSIT_FRAGMENT_OPEN, YOUR_FRAGMENT_OBJECT); 
fragmentTransaction.addToBackStack(null); // Your fragment add to back stack 
fragmentTransaction.commit(); 
+0

Эй, спасибо за ответ, что именно вы имеете в виду под «ВАШ ФРАГМЕНТ ОБЪЕКТ»? – Lara

+0

Фрагмент фрагментОбъект = новый фрагмент(); Первый раз, когда вы передаете свой фрагмент objectObject этому методу замещения, и после этого нажмите кнопку «Назад», которая добавляет в задний стек, теперь его получили. –

+0

Извините, я не понимаю, можете ли вы отредактировать свой ответ с помощью своего кода и моего? спасибо – Lara