不同Activity间传递数据的方法有很多种:
1、利用Intent带的putExtra方法传递数据;
使用方法:
(1)Intent it = new Intent(a.this,b.class);  ==>  Intent it = new Intent();  it.setClass(a.this,b.class);
(2)it.putExtra(String key,String(int) value);
(3)startActivity(it);
2、利用整个应用程序各个Activity都能访问到的类application共享数据,主要方法是把想共享的数据放到application的子类中,然后在其他activity访问共享的数据;
主要方法:
(1)把想要共享的数据放在一个Application的子类中;
(2)必须在Manifest.xml文件中的application中加一个name属性,值为该子类包名+文件名;
(3)在需要添加数据或取出数据的Activity使用getApplication()获得对象后再操作。
3、利用剪切板共享数据,不过新版本的安卓系统4.x的都不建议利用剪切板共享数据,该方法被弃用了;
(1)通过ClipboardManager cm = (ClipboardManager) getSystemService(CLIPBOARD_SERVICE);获取剪切板,往里面写数据;
(2)另一个Activity同样获取剪切板,然后获取数据;
4、一个Activity可利用Intent向其他Activity发送数据,不过启动下个Activity使用startActivityForResult方法,意思就是给你发送个数据,然后等待你发回的结果,使用该方法,需要实现onActivityResult方法才能收到数据,另外一个返回结果的Activity也需要使用setResult和finish方法。
(1)利用意图,启动startActivityForResult:
1
2
3
4
Intent it = newIntent(MainActivity.this,OtherActivity.class);
it.putExtra("one", a);          //传送数据
it.putExtra("two", b);
startActivityForResult(it,1);   //启动一个线程等待返回结果,1是请求码,开发者自己填,作为标志
(2)实现onActivityResult方法:
1
2
3
4
5
6
7
8
9
10
protectedvoidonActivityResult(intrequestCode, intresultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if(requestCode == 1) {  //是否等于请求码,验证是否是等待的那个
if(resultCode == 2) {//接受方发回的返回码,验证是否是等待的一方发回的,是才接收。
inti = data.getIntExtra("three",0);
three.setText(i + "");
}
}
}
(3)获取并返回结果
获取:
1
2
3
Intent it = getIntent();
inta = it.getIntExtra("one", 0);
intb = it.getIntExtra("two", 0);
返回:
1
2
3
4
5
Intent it = newIntent();
intthree = Integer.parseInt(edittext.getText().toString());
it.putExtra("three",three);
setResult(2,it);  //设置结果码
finish();        //结束该进程,执行完该语句自动返回结果。