1.传递简单的参数,主要就是在第一个activity中:
建立intent
intent对象i.putExtra("data","Hello Jiaojiao");
activityA中:
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
findViewById(R.id.btnStartAty).setOnClickListener(new View.OnClickListener(){
@Override
public void onClick(View v){
Intent i = new Intent(MyActivity.this,TheAty.class);
// i.putExtra("data","Hello Jiaojiao");//传递简单数据
//传递bundle
Bundle b = new Bundle();
b.putString("name","para1");
b.putInt("age",2);
i.putExtras(b);
startActivity(i);
}
});
}
activityB中:
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_the_aty);
Intent i =getIntent();
Bundle data = i.getExtras();
tv = (TextView) findViewById(R.id.tv);
//tv.setText(i.getStringExtra("data"));//简单参数
//bundle参数
tv.setText(String.format("name=%s,age=%d",
data.getString("name"),data.getInt("age")));
}
2.传递值对象:主要是通过android的parcelable接口实现序列化。
public class User implements Parcelable{
private String name;
private int age;
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public User(String name,int age){
this.name = name;
this.age = age;
}
@Override
public int describeContents() {
return 0;
}
@Override
public void writeToParcel(Parcel parcel, int i) {
parcel.writeString(getName());
parcel.writeInt(getAge());
}
public static final Creator<User> CREATOR = new Creator<User>() {
@Override
public User createFromParcel(Parcel parcel) {//通过parcel创建对象
// parcel.writeBundle();//可以传递多个同类对象
return new User(parcel.readString(),parcel.readInt());
}
@Override
public User[] newArray(int i) {
return new User[0];
}
};
}
package test.com.asdevtest;
import android.content.Intent;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.view.View;
import android.widget.EditText;
public class MyActivity extends AppCompatActivity {
public final static String EXTRA_MESSAGE = "test.com.asdevtest.MESSAGE";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
findViewById(R.id.btnStartAty).setOnClickListener(new View.OnClickListener(){
@Override
public void onClick(View v){
Intent i = new Intent(MyActivity.this,TheAty.class);
//传递值对象
i.putExtra("user",new User("mo",18));
startActivity(i);
}
});
}
}
public class TheAty extends AppCompatActivity {
private TextView tv;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_the_aty);
Intent i =getIntent();
tv = (TextView) findViewById(R.id.tv);
User user = i.getParcelableExtra("user");
tv.setText(String.format("User info(name=%s,age=%d",user.getName(),user.getAge()));
}
3.activity传递返回参数。
主要是:
activity A中,将startActivity改为startActivityForResult(i,0);
并重写onActivityResult
activity B中:为返回bin设置findViewById(R.id.button).setOnClickListener
public class MyActivity extends AppCompatActivity {
public final static String EXTRA_MESSAGE = "test.com.asdevtest.MESSAGE";
private TextView textView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
textView = (TextView) findViewById(R.id.textView);//回传的txetview
findViewById(R.id.btnStartAty).setOnClickListener(new View.OnClickListener(){
@Override
public void onClick(View v){
Intent i = new Intent(MyActivity.this,TheAty.class);
//传递值对象
i.putExtra("user",new User("mo",18));
startActivityForResult(i,0);
}
});
}
//根据返回的code来判断结果
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
textView.setText("另一个activity返回的结果是:"+data.getStringExtra("data"));
}
}
public class TheAty extends AppCompatActivity {
private TextView tv;
private EditText editText;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_the_aty);
Intent i =getIntent();
tv = (TextView) findViewById(R.id.tv);
editText = (EditText)findViewById(R.id.editText);
// Bundle data = i.getExtras();
//
//
// //tv.setText(i.getStringExtra("data"));//简单参数
// //bundle参数
// tv.setText(String.format("name=%s,age=%d",
// data.getString("name"),data.getInt("age")));
User user = i.getParcelableExtra("user");
tv.setText(String.format("User info(name=%s,age=%d",user.getName(),user.getAge()));
findViewById(R.id.button).setOnClickListener(new View.OnClickListener(){
@Override
public void onClick(View view) {
Intent i = new Intent();
i.putExtra("data",editText.getText().toString());
setResult(1,i);
finish();//结束当前activity
}
});
}
}
第一个layout
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical" android:layout_width="match_parent"
android:layout_height="match_parent">
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/btnStartAty"
android:text="启动另一个activity"/>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/textView"/>
</LinearLay
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context="test.com.asdevtest.TheAty">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/tv"/>
<EditText
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/editText"/>
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/button"
android:text="send back"/>
</LinearLayout>