一、使用Intent的传递数据
这是最常用的一种数据传递方法,通过Intent类的.putExtra方法可以将简单类型的数据或可序列化的对象保存在Intent的对象中,然后再Activity中使用getXxx(getInt,getString等)获得数据。将数据保存到Intent对象的代码如下。
intent = new Intent(this,MyActivity1.class);
//保存String类型的值
intent.putExtra("intent_string", "通过Intent传递的字符串");
//保存Integer类型的值
intent.putExtra("intent_integer", 200);
Data data=new Data();
data.id=1000;
data.name="Android";
//保存可序列化的对象
intent.putExtra("intent_object", data);
//启动要显示的Activity
startActivity(intent);
上面的代码设计到了一个Data类,这个类是可序列化的,也就是实现了java.io.Serializable接口。
Data类的代码如下:
import java.io.Serializable;
public class Data implements Serializable{
public int id;
public String name;
}
在MyActivity1类中获得上面保存的3个值(String,Integer,Data类型的值)的代码如下:
p
public class MyActivity1 extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.myactivity1);
TextView textView=(TextView)findViewById(R.id.textView1);
//获得String类型的数据
String intentString = getIntent().getStringExtra("intent_string");
//获得Integer类型的数据
int intentInteger = getIntent().getExtras().getInt("intent_integer");
//获得Data数据类型的数据
Data data = (Data)getIntent().getExtras().get("intent_object");
StringBuffer sb=new StringBuffer();
sb.append("intent_string:");
sb.append(intentString);
sb.append("\n");
sb.append("intent_integer:");
sb.append(intentInteger);
sb.append("\n");
sb.append("data.id:");
sb.append(data.id);
sb.append("\n");
sb.append("data.name:");
sb.append(data.name);
sb.append("\n");
//在屏幕上输入传递过来的值
textView.setText(sb.toString());
}