我已经实现了自己的后台堆栈,但我不确定有什么问题或者我可以改进什么,我的场景:我有一个包含2个活动的项目,第一个是“SplashActivity” - 我加载了一些网络数据 - 第二个,MainActivity。
在我的MainActivity中,我有一个片段,在这个片段里面有一个webview。
后退按钮的行为应该如下:
当用户未在我的网页浏览中导航时,请关闭该应用。
当用户在webview中导航时,请使用浏览器的后退历史记录。
这是我的代码:
@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 :(得分: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();