不同Activity之间传递数据

不同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 = new Intent(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
protected void onActivityResult( int requestCode, int resultCode, Intent data) {
super .onActivityResult(requestCode, resultCode, data);
if (requestCode == 1 ) {   //是否等于请求码,验证是否是等待的那个
if (resultCode == 2 ) { //接受方发回的返回码,验证是否是等待的一方发回的,是才接收。
int i = data.getIntExtra( "three" , 0 );
three.setText(i + "" );
}
}
}
(3)获取并返回结果
获取:
1
2
3
Intent it = getIntent();
int a = it.getIntExtra( "one" , 0 );
int b = it.getIntExtra( "two" , 0 );
返回:
1
2
3
4
5
Intent it = new Intent();
int three = Integer.parseInt(edittext.getText().toString());
it.putExtra( "three" ,three);
setResult( 2 ,it);   //设置结果码
finish();         //结束该进程,执行完该语句自动返回结果。


你可能感兴趣的:(android,Activity)