@Override
public void onTabSelected(Tab arg0, FragmentTransaction arg1) {
// TODO Auto-generated method stub
Fragment fragment = new DummyFragment();
//用于向fragment传入参数
Bundle argsBundle = new Bundle();
argsBundle.putInt(DummyFragment.ARG_SELECTION_NUMBER, arg0.getPosition()+1);
//向fragment传入参数
fragment.setArguments(argsBundle);
//获取fragmenttransaction对象
FragmentTransaction fTransaction = getSupportFragmentManager().beginTransaction();
//使用fragment代替该activity中的container组件
fTransaction.replace(R.id.container, fragment);
fTransaction.commit();
}
在这段代码中,为什么要使用Bundle对象向fragment传入参数?我直接就定义一个FragmentTransaction对象,然后调用replace(--)和commit()方法有没有问题?
还有, argsBundle.putInt的参数DummyFragment.ARG_SELECTION_NUMBER, arg0.getPosition()+1这是什么意思?
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
1、在这段代码中,为什么要使用Bundle对象向fragment传入参数?
使用Bundle向Fragment传入参数,Fragment可以在初始化的时候通过getArguments()获取传入的数据,就像启动一个Activity的时候可以putExtra("data", bundel)来传入参数一样。
2、我直接就定义一个FragmentTransaction对象,然后调用replace(--)和commit()方法有没有问题?
有问题。你怎么直接定义一个FragmentTransaction对象?它是抽象类。应该使用FragmentTransaction fTransaction = getSupportFragmentManager().beginTransaction(); 来获取FragmentTransaction实例。
3、argsBundle.putInt的参数DummyFragment.ARG_SELECTION_NUMBER, arg0.getPosition()+1这是什么意思?
第一个参数是key,第二个参数是value。Fragment可以在初始化的时候通过getArguments()获得Bundle,然后根据key获取值。此处value:arg0.getPosition()+1表示此Fragment的位置。