问题3:如何实现viewpager中点击其中一个fragment上的按钮,替换成另一个与viewpager不相关且自定义的fragment?
回答:在MainActivity中写一个方法,是的view层能找到不相关的fragment,在点击事件中使用getParentFragment()来获取对象
例子:
if ("login".equals(tag)) {
fragmentTag = fragmentManager.findFragmentByTag("register");
if (fragmentTag != null) {
RegisterFragment fragment = new RegisterFragment();
fragmentManager.beginTransaction().remove(fragmentTag).commit();
fragmentManager
.beginTransaction()
.setTransition(
FragmentTransaction.TRANSIT_FRAGMENT_FADE)
.add(R.id.main_content, fragment, "register").commit();
this.replaceMain("register");
} else {
// 获取login对fragment对象
fragmentTag = fragmentManager.findFragmentByTag(tag);
}
}
tv_reg.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
RegisterFragment fragment = new RegisterFragment();
Bundle bundle = new Bundle();
Fragment yfragment = getParentFragment().getFragmentManager()
.findFragmentByTag("register");
// 判断是否为null
if (yfragment != null) {
// 移除
getParentFragment().getFragmentManager().beginTransaction()
.remove(yfragment).commit();
}
// 添加
getParentFragment()
.getFragmentManager()
.beginTransaction()
.setTransition(
FragmentTransaction.TRANSIT_FRAGMENT_FADE)
.add(R.id.main_content, fragment, "register").commit();
// 显示
MainActivity activity = (MainActivity) getActivity();
activity.replaceMain("register");
}
});