我在导航抽屉活动中创建了一个标签式活动。我已将导航抽屉内的列表与各个片段相关联。我还在ft.commit()之前使用了命令ft.addToBackStack(null)。它非常好,我可以用它来关闭导航抽屉里面的碎片。现在我已经在选项卡式活动(主页)的片段中创建了Web视图。我添加了onBackPressed以返回webview内部,现在addToBackStack方法停止工作。
对于导航抽屉片段,
private void dispaySelectedScreen(int id) {
Fragment fragment = null;
switch (id) {
case R.id.fragment1:
fragment = new Fragment1();
break;
case R.id.fragment2:
fragment = new Fragment2();
break;
case R.id.fragment3:
fragment = new Fragment3();
break;
case R.id.fragment4:
fragment = new fragment4();
break;
}
if (fragment != null) {
FragmentTransaction ft = getSupportFragmentManager().beginTransaction();
ft.replace(R.id.content_main, fragment);
ft.addToBackStack(null);
ft.commit();
}
onBackPressed方法
@Override
public void onBackPressed() {
if (hWebView.canGoBack()) {
hWebView.goBack();
} else if (!getFragmentManager().popBackStackImmediate())
if (sWebView.canGoBack()) {
sWebView.goBack();
} else if (!getFragmentManager().popBackStackImmediate())
if (dWebView.canGoBack()) {
dWebView.goBack();
} else if (!getFragmentManager().popBackStackImmediate());
}
请帮帮我!!!
答案 0 :(得分:1)
尝试此代码:在选项卡式活动(主页)中覆盖onBackPressed()
。
@Override
public void onBackPressed() {
FragmentManager fm = getSupportFragmentManager();
if (hWebView.canGoBack()) {
hWebView.goBack();
} else if (!getFragmentManager().popBackStackImmediate())
if (fm.getBackStackEntryCount() > 0) {
fm.popBackStack();
} else {
super.onBackPressed();
}
}