碎片按钮点击在棉花糖版本的android中不起作用

碎片按钮点击在棉花糖版本的android中不起作用,android,android-6.0-marshmallow,Android,Android 6.0 Marshmallow,碎片按钮点击在棉花糖版本的android中不起作用。我有三个片段a1,a2和a3所有片段都有一个按钮在a1按钮点击转到a2和a2按钮点击转到a3在较低版本中工作良好,然后是23,但在23 api a2按钮点击不工作 片段a1 public class A1Fragment extends RootFragment { public A1Fragment() { // Required empty public constructor } @Override public View

碎片按钮点击在棉花糖版本的android中不起作用。我有三个片段a1,a2和a3所有片段都有一个按钮在a1按钮点击转到a2和a2按钮点击转到a3在较低版本中工作良好,然后是23,但在23 api a2按钮点击不工作

片段a1

public class A1Fragment extends RootFragment {

public A1Fragment() {
    // Required empty public constructor
}


@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
                         Bundle savedInstanceState) {
    // Inflate the layout for this fragment
    View rootView = inflater.inflate(R.layout.fragment_a1, container, false);

    rootView.findViewById(R.id.next_button).setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            enterNextFragment();
        }
    });

    return rootView;
}

private void enterNextFragment() {
    A2Fragment a2Fragment = new A2Fragment();
    FragmentTransaction transaction = getChildFragmentManager().beginTransaction();

    // Store the Fragment in stack
    transaction.addToBackStack(null);
    transaction.replace(R.id.fragment_mainLayout, a2Fragment).commit();
}
}
Fragement a2

public class A2Fragment extends RootFragment implements View.OnClickListener{

Button button;

public A2Fragment() {
    // Required empty public constructor
}


@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
                         Bundle savedInstanceState) {
    // Inflate the layout for this fragment
    View rootView = inflater.inflate(R.layout.fragment_a2, container, false);

    button = (Button)rootView.findViewById(R.id.next_button);
    button.setOnClickListener(this);

    return rootView;
}


private void enterNextFragment() {
    A3Fragment a2Fragment = new A3Fragment();
    FragmentTransaction transaction = getChildFragmentManager().beginTransaction();

    // Store the Fragment in stack
    transaction.addToBackStack(null);
    transaction.replace(R.id.fragment_mainLayout, a2Fragment).commit();
}

@Override
public void onClick(View v) {

    switch (v.getId()){

        case R.id.next_button:

            enterNextFragment();
            break;
    }
}
}
片段a3

public class A3Fragment extends RootFragment {

protected ViewPager pager;

public A3Fragment() {
    // Required empty public constructor
}


@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
                         Bundle savedInstanceState) {
    // Inflate the layout for this fragment
    View rootView = inflater.inflate(R.layout.fragment_a3, container, false);
    Button button = (Button) rootView.findViewById(R.id.button);
    pager = (ViewPager) getActivity().findViewById(R.id.vp_pages);

   /* getFragmentManager().popBackStack(null, FragmentManager.POP_BACK_STACK_INCLUSIVE);
    getFragmentManager().beginTransaction().remove(new A3Fragment());*/

    button.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {

            pager.setCurrentItem(2);
            enterNextFragment();
        }
    });
    return rootView;

}


private void enterNextFragment() {

    C1Fragment a2Fragment = new C1Fragment();
    FragmentTransaction transaction = getChildFragmentManager().beginTransaction();

    // Store the Fragment in stack
    /*transaction.addToBackStack(null);*/
    transaction.replace(R.id.fragment_mainLayout, a2Fragment).commit();
}

}

尝试从a2中删除开关盒,并像在其他两个中使用click listener一样使用它。为什么要使用getChildFragmentManager()?您的片段是否在另一个片段中?您必须使用getFragmentManager或getSupportFragmentManager而不是getChildFragmentManager()我同时使用getFragmentManager和getSupportFragmentManager,但它不起作用。。