如何从Viewpager打开片段

时间:2018-09-12 05:47:08

标签: android android-fragments

我正在尝试使用viewpager制作导航抽屉,因为我希望导航抽屉为全屏显示。我已经创建了一个片段并添加到viewpager。从按钮上的导航片段中单击我要打开另一个片段。我添加了一个代码来打开另一个片段,但它使应用程序崩溃。我该怎么做。 我的按钮代码

public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
       View v = inflater.inflate(R.layout.tab2, container, false);
       Button btnOpenSlideShow = (Button)v.findViewById(R.id.btnOpenSlideShow);
        btnOpenSlideShow.setOnClickListener(new View.OnClickListener() {
           @Override
           public void onClick(View v) {
               AllFragment allFragment = new AllFragment();
               FragmentManager manager = getFragmentManager();
               manager.beginTransaction().replace(R.id.mainLayout,allFragment,allFragment.getTag())
                       .commit();
           }
       });
return v;
    }
}

2 个答案:

答案 0 :(得分:0)

代替getFragmentManager使用getChildFragmentManager

AllFragment allFragment = new AllFragment();
FragmentManager manager = getChildFragmentManager();
manager.beginTransaction().replace(R.id.mainLayout,allFragment,allFragment.getTag())
                       .commit();

答案 1 :(得分:0)

使用getSupportFragmentManager()

FragmentManager manager = getActivity().getSupportFragmentManager();

AllFragment allFragment = new AllFragment();

manager.beginTransaction()
.replace(R.id.frameLayout, allFragment )
.addToBackStack(null)
.attach(myFragment)
.commit();

希望这会有所帮助。