导航抽屉,处理返回按钮以返回上一个片段。
导航抽屉,处理返回按钮以返回上一个片段。
我正在使用内置的导航抽屉来运行我的应用程序。我无法完全弄清楚如何处理返回按钮。当按下返回按钮时,我希望它重新加载第一个片段。Fragment1。
因此,当应用程序启动时,您将看到启动的Fragment1。然后,他们可以点击Fragment 2-5来转到其他页面。在所有这些页面中,我希望返回按钮将用户带回Fragment1。用户只能通过返回按钮退出应用程序的地方是Fragment1。
由于所有都由FragmentActivity处理,我尝试在那里处理返回按钮。然而,我一直遇到强制关闭错误:
(01-11 14:09:33.114: E/AndroidRuntime(8292): android.view.InflateException: Binary XML file line #7: Error inflating class fragment)
到目前为止,这就是我所拥有的:
我确保像这样将片段添加到返回堆栈中:
fm.beginTransaction().replace(R.id.main, newFragment).addToBackStack("fragBack").commit();
返回按钮:
@Override public void onBackPressed() { if (getSupportFragmentManager().findFragmentByTag("fragBack") != null) { } else { super.onBackPressed(); return; } if (getSupportFragmentManager().getBackStackEntryCount() != 0) { Toast.makeText(getApplicationContext(), "Test", Toast.LENGTH_LONG).show(); Fragment frag = getSupportFragmentManager().findFragmentByTag("fragBack"); FragmentTransaction transac = getSupportFragmentManager().beginTransaction().remove(frag); transac.commit(); } }
有人知道我需要做什么吗?我需要在每个片段中调用onBackPressed(如果可能的话),而不是控制抽屉的FragmentActivity吗?在我以前的应用程序中,不管用户在哪个片段上,按下返回按钮都可以关闭应用程序,但我现在做的这个应用程序,我希望返回按钮返回到Fragment1。
非常感谢您的帮助,谢谢。
onItemClick
@Override public void onItemClick(AdapterView> adapterView, View view, int i, long l) { Fragment newFragment = new MapsPage(); FragmentManager fm = getSupportFragmentManager(); switch(i) { case 0: newFragment = new Fragment2(); break; case 1: newFragment = new Fragment3(); break; case 2: newFragment = new Fragment4(); break; case 3: newFragment = new Fragment5(); break; } fm.beginTransaction().add(R.id.main, newFragment).addToBackStack("fragback").commit(); drawerLayout.closeDrawer(rl); }