Android传递简单数据的方法

目录

  1. Activity之间传递数据
    1. FirstAty传输给SecondAty
    2. SecondAty关闭后返回的数据给FirstAty
  2. Fragment之间的数据传递
  3. Activity与Fragment之间的数据传递

    Activity之间传递数据

    (FirstAty传输给SecondAty)

    传单一数据(主要用到Intent.putExtra()方法也可以用传数据包来实现 )

    下面是FirstAty.java所需要的代码
    1
    2
    3
    Intent i =new Intent(FirstAty.class,SecondAty.class);
    i.putExtra("data","Hi~");//putExtra("A",B)中,AB为键值对,第一个参数为键名,第二个参数为键对应的值。
    startActivity(i);

putExtra可以传递的包括基本数据类型(含基本数据类型的数组)、String(包含数组)、Parcelable(包含数组)、Serializable、Bundle、CharSequence、Intent几种类型的数据。

下面是SecondAty.java所需要的代码

1
2
Intent i =getIntent();
String data=i.getStringExtra("data");//此处用新建一个字符串data保存获得的数据

传数据包(主要用到Bundle类)

下面是FirstAty.java所需要的代码

1
2
3
4
5
Bundle b = new Bundle(); //新建一个bundle类
Intent i =new Intent(FirstAty.class,SecondAty.class);
b.putString("name","张三");
b.putInt("age",100);
i.putExtras(b);

下面是SecondAty.java所需要的代码

1
2
3
4
Intent i =getIntent();
Bundle b =i.getExtras();
String name=b.getString("name");//获取数据
int age=b.getInt("age")

(SecondAty关闭后返回的数据给FirstAty)

下面是FirstAty.java所需要的代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
Intent i = new Intent(MainActivity.this, TheAty.class);
startActivityForResult(i, 2);//第二个参数为请求码,可以根据自己需求编号
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (data == null) {
//只能得到requestCode(请求码):2 ;resultCode(结果码):默认 0;
}
else{
String name =data.getStringExtra("name");
int age=data.getIntExtra("age"0);//第二个参数是默认值
int resultcode=resultCode;//结果码
}
}

下面是SecondAty.java所需要的代码

1
2
3
4
5
6
Bundle b = new Bundle(); //新建一个bundle类
Intent i =new Intent();
b.putString("name","张三");
b.putInt("age",100);
i.putExtras(b);
setResult(1,i);//第一个参数为结果码

Fragment的数据传递

(Fragment1传输给Fragment2(主要用到setArguments方法))

下面是Fragment1.java所需要的代码

1
2
3
4
5
6
7
8
9
10
11
12
View rootView = inflater.inflate(R.layout.fragment1_main, container, false);
Fragment2 fragment2 = new Fragment2();
Bundle bundle = new Bundle();
bundle.putString("name", "张三");
fragment2.setArguments(bundle);
FragmentManager fm = getFragmentManager();
FragmentTransaction transaction = fm.beginTransaction();
transaction.addToBackStack(null);
transaction.add(R.id.content,fragment2);
transaction.hide(Fragment1.this);
transaction.commit();

下面是Fragment2.java所需要的代码
一般在Fragment2的onAttach生命周期里面去接收。

1
2
Bundle arguments = getArguments();
String name = arguments.getString("name");

(Fragment2返回传输给Fragment1(未完待续~))