在Android中传递数据的方法非常多,本节将介绍4种比较常用的数据传递方法,这4种数据传递方法如下:
1、通过Intent传递数据
2、通过静态(static)变量传递数据
3、通过剪切板(Clipboard)传递数据
4、通过全局变量传递数据
1、利用Intent的Extra部分来存储我们想要传递的数据,可以传送int, long, char等一些基础类型,对复杂的对象就无能为力了。Intent传递数据具有局限性,Intent无法传递不能序列化的对象。
传递数据:
//传递参数
Intent intentSimple = new Intent();
intentSimple.setClass(MainActivity.this,SecondActivity.class);
Bundle bundle=new Bundle();
bundle.putString("user","xxx");
bundle.putString("pwd","xxx");
intentSimple.putExtras(bundle);
startActivity(intentSimple);
接收数据:
//接收参数
Bundle bundle = this.getIntent().getExtras();
String eml = bundle.getString("usr");
String pwd = bundle.getString("pwd");
2、静态变量就是一种非常方便,易用的传递数据的方法。(static)
3、使用剪切板传递数据。(Clipboard)
下面是将字符串保存到剪切板上的代码:
Intent intent=new Intent(this,SecondActivity.class);
//获取管理剪切板的对象(ClipboardManager)
ClipboardManager clipboard=(ClipboardManager)gerSystemService(Context.CLIPBOARD_SERVICE);
//向剪切板保存字符串
clipboard.setText("通过Clipboard传递数据");
startActivity(intent);
下面是从剪切板上获取这个字符串的代码:
ClipboardManager clipboard=(ClipboardManager)gerSystemService(Context.CLIPBOARD_SERVICE);
//剪切板获得字符串
String text=clipboard.getText().toString();
4、使用全局变量传递数据(Application类)
虽然使用静态变量可以传递任何类型的数据,但是官方并不推荐这么做,因为大量使用静态变量,容易造成内存溢出异常。
- public class Data extends Application{
- private String b;
- public String getB(){
- return this.b;
- }
- public void setB(String c){
- this.b= c;
- }
- @Override
- public void onCreate(){
- b = "hello";
- super.onCreate();
- }
- }