我有两个片段。无论从第一个片段传递到活动的数据是什么,我都想将它传递给第二个片段。我正在使用bundle对象来传递数据。但我有一个条件,我正在检查,设备是否是平板电脑的手机。 这是模块: P
ublic void clickItem(int position) {
DetailFragment fragment = (DetailFragment) getSupportFragmentManager()
.findFragmentById(R.id.fragment_container2);
Bundle bundle = new Bundle();
bundle.putInt("pos", position);
if (fragment == null) {
DetailFragment detail=new DetailFragment();
detail.setArguments(bundle);
replaceFragment(detail);
} else {
fragment.setArguments(bundle);
replaceNewFragment(fragment);
}
}
当我点击第一个片段的任何项目时,控制转到clickItem方法。在这种方法中,我正在检查设备是手机还是平板电脑。 这是replaceFragment方法& replaceNewFragment方法:
private void replaceFragment(Fragment fragment) {
getSupportFragmentManager().beginTransaction()
.replace(R.id.fragment_container, fragment)
.addToBackStack(null).commit();
}
private void replaceNewFragment(Fragment fragment){
getSupportFragmentManager().beginTransaction()
.replace(R.id.fragment_container2, fragment)
.addToBackStack(null).commit();
}
它适用于手机。但是在平板电脑中,当我点击该项目时,片段就像手机一样显示在下一页中。是的,它正在发生。我已经在layout-large中定义了xml文件。任何人都可以告诉我,我哪里出错了?
答案 0 :(得分:0)
您需要先点击检查
DetailFragment fragment=(DetailFragment) getSupportFragmentManager().findFragmentById(R.id.fragment_container2);
if(fragment!=null){
// Then do your operation
答案 1 :(得分:0)
片段实例以null为单位然后将包传递给它。
试试这个
if(fragment==null){
replaceFragment(fragment);
}
else{
fragment.setArguments(bundle);
replaceNewFragment(fragment);
}
并且在replaceFragment(fragment);
方法中如果你创建一个新的片段,你将setArguments添加到片段后。