如何将bundle对象从activity传递到另一个片段?

时间:2014-05-09 06:56:21

标签: android android-fragments

我有两个片段。无论从第一个片段传递到活动的数据是什么,我都想将它传递给第二个片段。我正在使用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文件。任何人都可以告诉我,我哪里出错了?

2 个答案:

答案 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添加到片段后。