您的位置:首页 > 移动开发 > Android开发

actvity与fragment之间的数据传递

2017-01-07 10:09 323 查看
一、activity向下面的fragment传递数据

1、通过setArguments()方法进行数据传递

例如:activity内的代码

public class MainActivity extends Activity {

private FragmentManager manager;

private FragmentTransaction transaction;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);

manager = getFragmentManager();
transaction = manager.beginTransaction();

MyFragment1 fragment1 = new MyFragment1();
Bundle bundle1 = new Bundle();
bundle1.putString("id", "Activity发送给MyFragment1的数据");
fragment1.setArguments(bundle1);
transaction.replace(R.id.left, fragment1, "left");

MyFragment2 fragment2 = new MyFragment2();
Bundle bundle2 = new Bundle();
bundle2.putString("id", "Activity发送给MyFragment2的数据");
fragment2.setArguments(bundle2);
transaction.replace(R.id.right, fragment2, "right");

transaction.commit();
}


}

fragment内的代码:

public class MyFragment1 extends Fragment {

@Override

public void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

}

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.f1, null);

TextView textView = (TextView) view.findViewById(R.id.textView);
Bundle bundle1 = getArguments();
textView.setText(bundle1.getString("id"));
return view;
}


}

2、可以在构建fragment时构建一个有参的构造函数,当activity新建fragment时可以直接将需要的参数传递过去:

注意fragment写构造函数时需要一个无参的构造函数,和一个有参的构造函数,有参的构造函数上必须加入@SuppressLint({“NewApi”, “ValidFragment”})注释,例如:

public ShouYeRepairShopHomeFragment() {

}

@SuppressLint({"NewApi", "ValidFragment"})
public ShouYeRepairShopHomeFragment(Repair repair) {
this.repair = repair;
}这两个构造函数


3、是在宿主Activity中定义方法,将要传递的值传递到Fragment中,在Fragment中的onAttach方法中,获取到这个值。

//宿主activity中的getTitles()方法

public String getTitles(){

return “hello”;

}

//Fragment中的onAttach方法

@Override

public void onAttach(Activity activity) {

super.onAttach(activity);

titles = ((MainActivity) activity).getTitles();

}

//通过强转成宿主activity,就可以获取到传递过来的数据
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  android