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