Activtity中传递的数据有以下几种:
1、简单数据;
2、数据包(实现serializable和实现parcelable);
3、值对象;
我们创建两个activity,演示三种传递数据的方式:
1、MainActivity:
Public class MainActivity extends AppCompatActivity{
Private Button btnStartAtv1;
Private TextView tvOut;
@Override
Protected void onCreate(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
tvOut=(TextView)findViewById(R.id.tvoOut);
btnStartAtv1=(Button)findViewById(R.id.btnStartAtv1);
btnStartAtv1.setOnClickListener(newView.OnClickListener(){
@Override
Public void onClick(Viewv){
Intent I = newIntent(MainActivity.this,Atv1.class);
//1、传递简单数值
i.putExtra("txt","helloatv1");
startActivity(i);
//2、传递数据包
Bundledata=newBundle();
data.putString("title","helloatv1");
data.putInt("page",1);
i.putExtras(data);
startActivity(i)
//3.1、传递值对象(实现serializable)
i.putExtra("user",newUser("Ammy",21));
startActivity(i)
//3.2、传递值对象(实现parcelable)
i.putExtra("book",newBook("java",1));
startActivity(i);
/*获取传回的值包括下面的onActivityResult()方法*/
startActivityForResult(i,0);
}
});
System.out.println("MainonCreat");
}
//处理返回的值
Protected void onActivityResult(intrequestCode,intresultCode,Intentdata){
Stringresult=data.getStringExtra("result");
tvOut.setText("Atv1返回的数据是:"+result);
super.onActivityResult(requestCode,resultCode,data);
}
2、Atv1
Public class Atv1 extendsMainActivity{
Private Button btnClose;
Private TextView tvOut;
Private EditText et;
@Override
Public void onCreate(BundlesavedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.atv1);
btnClose=(Button)findViewById(R.id.btnClose);
tvOut=(TextView)findViewById(R.id.tvOut);
et=(EditText)findViewById(R.id.editText);
//1、接收一个简单数值
tvOut.setText(getIntent().getStringExtra("txt"));
//2、接收数据包
Bundle data = getIntent().getExtras();
tvOut.setText(String.format("title=%s,page=%d,cont=%s",data.getString("title"),
data.getInt("page"),data.getString("cont","first")));
//3.1、接收值对象(实现serializable),user为包含name和age属性及setter、getter的基类
User user = (User)getIntent().getSerializableExtra("user");
tvOut.setText(String.format("userinfo(name=%s,age=%d)",user.getName(),
user.getAge()));
//3.2、接收值对象(实现parcelable),book为包含name和id属性及setter、getter的基类
Book book = getIntent().getParcelableExtra("book");
tvOut.setText(String.format("bookinfo(name=%s,id=%d)",book.getName(),book.getId()));
/*从第二个activity中传回的值传值到前一个activity*/
btnClose.setOnClickListener(newView.OnClickListener(){
@Override
publicvoidonClick(Viewv){
Intent I = newIntent();
i.putExtra("result",et.getText().toString());
setResult(0,i);
finish();
}
});
}
}
3、Activty_main.xml:
<TextViewandroid:text="@string/hello_world"android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/tvoOut"/>
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="StartAtv1"
android:id="@+id/btnStartAtv1"
android:layout_below="@+id/tvoOut"
android:layout_alignParentLeft="true"
android:layout_alignParentStart="true"/>
4、Atv1.xml:
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="ThisisAtv1"
android:id="@+id/tvOut"/>
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="close"
android:id="@+id/btnClose"
android:layout_below="@+id/editText"
android:layout_alignParentLeft="true"
android:layout_alignParentStart="true"/>
<EditText
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/editText"
android:layout_below="@+id/tvOut"
android:layout_alignParentLeft="true"
android:layout_alignParentStart="true"/>