我在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}}
答案 0 :(得分:2)
如果您想转到Fragment
中的上一个BackStack
,那么您需要做的就是致电onBackPressed()
。