简体   繁体   English

如何才能返回到堆栈中的上一个片段?

[英]How can go to the previous fragment in backstack?

I have a MainActivity in the onCreate method i add a fragment like this : 我在onCreate方法中有一个MainActivity,我添加了一个像这样的片段:

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

In FragmentA there is a lisview and when user clicked on an item i remove FragmentA and add FragmentB (In FragmentA there is a FragmentPagerAdapter and in FragmentPagerAdapter is a ListFragment in ListFragment i called below code ) FragmentA有一个lisview,当用户单击某个项目时,我删除FragmentA并添加FragmentB (在FragmentA有一个FragmentPagerAdapter ,在FragmentPagerAdapterListFragment中的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();
};

Now in FragmentB there is button and whenever user clicked on it i want to go back to the FragmentA . 现在在FragmentB有一个按钮,每当用户单击它时,我都想回到FragmentA I try to call popBackStack() in button listener but nothing happen 我尝试在按钮侦听器中调用popBackStack() ,但没有任何反应

 FragmentManager fragmentManager = getActivity().getSupportFragmentManager();
 fragmentManager.popBackStack();

Or i also try this below code but it gives me nullpointer exception 或者我也尝试下面的代码,但这给了我nullpointer异常

   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();

如果要转到BackStack的上一个Fragment ,则只需执行onBackPressed()

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM