如何在backstack中转到上一个片段?

时间:2014-10-16 07:51:31

标签: android fragment

我在onCreate方法中有一个MainActivity,我添加了一个像这样的片段:

        getSupportFragmentManager().beginTransaction()
                .replace(R.id.content_frame, new FragmentA(), FRAGMENT_TAG).addToBackStack("main")
                .commit();

FragmentA中有一个lisview,当用户点击某个项目时,我会移除FragmentA并添加FragmentB(在FragmentA中有一个FragmentPagerAdapter并且在FragmentPagerAdapter ListFragment ListFragment listView.setOnItemClickListener(new AdapterView.OnItemClickListener() { @Override public void onItemClick(AdapterView<?> parent, View view, int position, long id) { getActivity().getSupportFragmentManager().beginTransaction() .replace(R.id.content_frame, new FragmentB(), MainActivity.FRAGMENT_TAG).addToBackStack("main") .commit(); }; 我在下面的代码中调用了

FragmentB

现在在FragmentA中有按钮,每当用户点击它时,我想返回popBackStack()。 我尝试在按钮监听器中调用 FragmentManager fragmentManager = getActivity().getSupportFragmentManager(); fragmentManager.popBackStack(); 但没有任何事情发生

   FragmentManager fragmentManager = getActivity().getSupportFragmentManager();
        String fragmentTag = fragmentManager.getBackStackEntryAt(fragmentManager.getBackStackEntryCount() - 1).getName();
        Fragment currentFragment =getActivity().getSupportFragmentManager()
                .findFragmentByTag(fragmentTag);
        fragmentManager.beginTransaction().replace(R.id.content_frame,currentFragment).commit();
        fragmentManager.popBackStack();

或者我也尝试下面的代码,但它给了我nullpointer异常

{{1}}

1 个答案:

答案 0 :(得分:2)

如果您想转到Fragment中的上一个BackStack,那么您需要做的就是致电onBackPressed()