Activity之间的数据传递
<1>传递基本数据类型:
基本数据类型有:整数型:byte,short,int,long
浮点型:float,doubole
布尔型:boolean
字符型:char
代码如下
package com.example.work0616; import android.content.Intent; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.view.View; import android.widget.EditText; import android.widget.TextView; import com.example.entity.Person; import java.util.ArrayList; public class MainActivity extends AppCompatActivity { private EditText et_main_uname; private TextView tv_main_showMood; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); et_main_uname = (EditText) findViewById(R.id.et_main_uname); tv_main_showMood = (TextView) findViewById(R.id.tv_main_showMood); } public void writeMood(View view){ //获得EditView里面的值 String unames=et_main_uname.getText().toString(); Intent intent=new Intent(this,MoodActivity.class); //传递基本数据类型 intent.putExtra("unames",unames); intent.putExtra("uage",19); startActivityForResult(intent,0x201); } @Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { super.onActivityResult(requestCode, resultCode, data); String content= data.getStringExtra("content"); tv_main_showMood.setText(content); } }
package com.example.work0616; import android.content.Intent; import android.os.Parcelable; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.view.View; import android.widget.EditText; import android.widget.TextView; import com.example.entity.Person; import java.util.List; public class MoodActivity extends AppCompatActivity { private TextView tv_mood_showName; private EditText et_mood_content; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_mood); tv_mood_showName = (TextView) findViewById(R.id.tv_mood_showName); et_mood_content = (EditText) findViewById(R.id.et_mood_content); // 获取第一个页面传递过来的数据 String unames= getIntent().getStringExtra("unames"); int uage=getIntent().getIntExtra("uage",0); tv_mood_showName.setText("你好:"+unames+" "+uage); tv_mood_showName.setTextSize(30); } public void ok(View view){ String content=et_mood_content.getText().toString(); Intent intent=new Intent(); intent.putExtra("content",content); //设置结果 setResult(0x1,intent); //自杀,干掉自己,干掉当前的Activity finish(); } }
第二种:传递Bundle类型的数据
package com.example.work0616; import android.content.Intent; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.view.View; import android.widget.EditText; import android.widget.TextView; import com.example.entity.Person; import java.util.ArrayList; public class MainActivity extends AppCompatActivity { private EditText et_main_uname; private TextView tv_main_showMood; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); et_main_uname = (EditText) findViewById(R.id.et_main_uname); tv_main_showMood = (TextView) findViewById(R.id.tv_main_showMood); } public void writeMood(View view){ //获得EditView里面的值 String uname=et_main_uname.getText().toString(); Intent intent=new Intent(this,MoodActivity.class);// 传递Bundle Bundle bundle=new Bundle(); bundle.putString("unames",unames); bundle.putInt("uage",19); intent.putExtra("bundle",bundle);startActivityForResult(intent,0x201); } @Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { super.onActivityResult(requestCode, resultCode, data); String content= data.getStringExtra("content"); tv_main_showMood.setText(content); }}
package com.example.work0616; import android.content.Intent; import android.os.Parcelable; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.view.View; import android.widget.EditText; import android.widget.TextView; import com.example.entity.Person; import java.util.List; public class MoodActivity extends AppCompatActivity { private TextView tv_mood_showName; private EditText et_mood_content; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_mood); tv_mood_showName = (TextView) findViewById(R.id.tv_mood_showName); et_mood_content = (EditText) findViewById(R.id.et_mood_content); //接收Bundle Bundle bundle= getIntent().getBundleExtra("bundle"); String unames= bundle.getString("unames"); int uage=bundle.getInt("uage"); tv_mood_showName.setText("你好:"+unames+" "+uage); tv_mood_showName.setTextSize(30); } public void ok(View view){ String content=et_mood_content.getText().toString(); Intent intent=new Intent(); intent.putExtra("content",content); //设置结果 setResult(0x1,intent); //自杀,干掉自己,干掉当前的Activity finish(); } }
第三种是传递对象
在Java目录下创建一个backpack一个包,再创建一个class类,我创建的叫Person
package com.example.entity; import android.os.Parcel; import android.os.Parcelable; import java.io.Serializable; /** * Created by Administrator on 2017/6/16 0016. */ public class Person implements Serializable{ private int pid; private String pname; private int page; public Person() { } public Person(int pid, String pname, int page) { this.pid = pid; this.pname = pname; this.page = page; } protected Person(Parcel in) { pid = in.readInt(); pname = in.readString(); page = in.readInt(); } @Override public String toString() { return "Person{" + "pid=" + pid + ", pname='" + pname + '\'' + ", page=" + page + '}'; } }
package com.example.work0616; import android.content.Intent; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.view.View; import android.widget.EditText; import android.widget.TextView; import com.example.entity.Person; import java.util.ArrayList; public class MainActivity extends AppCompatActivity { private EditText et_main_uname; private TextView tv_main_showMood; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); et_main_uname = (EditText) findViewById(R.id.et_main_uname); tv_main_showMood = (TextView) findViewById(R.id.tv_main_showMood); } public void writeMood(View view){ //获得EditView里面的值 String unames=et_main_uname.getText().toString(); Intent intent=new Intent(this,MoodActivity.class); // 传递对象 Person person1=new Person(1,"Jane1",19); Person person2=new Person(2,"Jane2",19); Person person3=new Person(3,"Jane3",19); startActivityForResult(intent,0x201); } @Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { super.onActivityResult(requestCode, resultCode, data); String content= data.getStringExtra("content"); tv_main_showMood.setText(content); } }
package com.example.work0616; import android.content.Intent; import android.os.Parcelable; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.view.View; import android.widget.EditText; import android.widget.TextView; import com.example.entity.Person; import java.util.List; public class MoodActivity extends AppCompatActivity { private TextView tv_mood_showName; private EditText et_mood_content; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_mood); tv_mood_showName = (TextView) findViewById(R.id.tv_mood_showName); et_mood_content = (EditText) findViewById(R.id.et_mood_content); //接收对象 Person person= (Person) getIntent().getSerializableExtra("person"); tv_mood_showName.setText("你好"+person.toString()); } public void ok(View view){ String content=et_mood_content.getText().toString(); Intent intent=new Intent(); intent.putExtra("content",content); //设置结果 setResult(0x1,intent); //自杀,干掉自己,干掉当前的Activity finish(); } }
第四种:传递对象还可以使用Parceable
package com.example.entity; import android.os.Parcel; import android.os.Parcelable; import java.io.Serializable; /** * Created by Administrator on 2017/6/16 0016. */ public class Person implements Parcelable{ private int pid; private String pname; private int page; public Person() { } public Person(int pid, String pname, int page) { this.pid = pid; this.pname = pname; this.page = page; } protected Person(Parcel in) { pid = in.readInt(); pname = in.readString(); page = in.readInt(); } public static final Creator<Person> CREATOR = new Creator<Person>() { @Override public Person createFromParcel(Parcel in) { return new Person(in); } @Override public Person[] newArray(int size) { return new Person[size]; } }; @Override public String toString() { return "Person{" + "pid=" + pid + ", pname='" + pname + '\'' + ", page=" + page + '}'; } @Override public int describeContents() { return 0; } @Override public void writeToParcel(Parcel dest, int flags) { dest.writeInt(pid); dest.writeString(pname); dest.writeInt(page); } }
package com.example.work0616; import android.content.Intent; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.view.View; import android.widget.EditText; import android.widget.TextView; import com.example.entity.Person; import java.util.ArrayList; public class MainActivity extends AppCompatActivity { private EditText et_main_uname; private TextView tv_main_showMood; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); et_main_uname = (EditText) findViewById(R.id.et_main_uname); tv_main_showMood = (TextView) findViewById(R.id.tv_main_showMood); } public void writeMood(View view){ //获得EditView里面的值 String unames=et_main_uname.getText().toString(); Intent intent=new Intent(this,MoodActivity.class); // 传递对象 Person person1=new Person(1,"Jane1",19); Person person2=new Person(2,"Jane2",19); Person person3=new Person(3,"Jane3",19); startActivityForResult(intent,0x201); } @Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { super.onActivityResult(requestCode, resultCode, data); String content= data.getStringExtra("content"); tv_main_showMood.setText(content); } }
package com.example.work0616; import android.content.Intent; import android.os.Parcelable; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.view.View; import android.widget.EditText; import android.widget.TextView; import com.example.entity.Person; import java.util.List; public class MoodActivity extends AppCompatActivity { private TextView tv_mood_showName; private EditText et_mood_content; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_mood); tv_mood_showName = (TextView) findViewById(R.id.tv_mood_showName); et_mood_content = (EditText) findViewById(R.id.et_mood_content); //接收对象 Person person=getIntent().getParcelableExtra("person"); tv_mood_showName.setText("你好"+person.toString()); } public void ok(View view){ String content=et_mood_content.getText().toString(); Intent intent=new Intent(); intent.putExtra("content",content); //设置结果 setResult(0x1,intent); //自杀,干掉自己,干掉当前的Activity finish(); } }
第五种:传递对象数组
package com.example.entity; import android.os.Parcel; import android.os.Parcelable; import java.io.Serializable; /** * Created by Administrator on 2017/6/16 0016. */ public class Person implements Parcelable{ private int pid; private String pname; private int page; public Person() { } public Person(int pid, String pname, int page) { this.pid = pid; this.pname = pname; this.page = page; } protected Person(Parcel in) { pid = in.readInt(); pname = in.readString(); page = in.readInt(); } public static final Creator<Person> CREATOR = new Creator<Person>() { @Override public Person createFromParcel(Parcel in) { return new Person(in); } @Override public Person[] newArray(int size) { return new Person[size]; } }; @Override public String toString() { return "Person{" + "pid=" + pid + ", pname='" + pname + '\'' + ", page=" + page + '}'; } @Override public int describeContents() { return 0; } @Override public void writeToParcel(Parcel dest, int flags) { dest.writeInt(pid); dest.writeString(pname); dest.writeInt(page); } }
package com.example.work0616; import android.content.Intent; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.view.View; import android.widget.EditText; import android.widget.TextView; import com.example.entity.Person; import java.util.ArrayList; public class MainActivity extends AppCompatActivity { private EditText et_main_uname; private TextView tv_main_showMood; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); et_main_uname = (EditText) findViewById(R.id.et_main_uname); tv_main_showMood = (TextView) findViewById(R.id.tv_main_showMood); } public void writeMood(View view){ //获得EditView里面的值 String unames=et_main_uname.getText().toString(); Intent intent=new Intent(this,MoodActivity.class); // 传递对象 Person person1=new Person(1,"Jane1",19); Person person2=new Person(2,"Jane2",19); Person person3=new Person(3,"Jane3",19); ArrayList<Person> persons=new ArrayList<>(); persons.add(person1); persons.add(person2); persons.add(person3); //传递对象集合 intent.putParcelableArrayListExtra("persons",persons); startActivityForResult(intent,0x201); } @Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { super.onActivityResult(requestCode, resultCode, data); String content= data.getStringExtra("content"); tv_main_showMood.setText(content); } }
package com.example.work0616; import android.content.Intent; import android.os.Parcelable; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.view.View; import android.widget.EditText; import android.widget.TextView; import com.example.entity.Person; import java.util.List; public class MoodActivity extends AppCompatActivity { private TextView tv_mood_showName; private EditText et_mood_content; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_mood); tv_mood_showName = (TextView) findViewById(R.id.tv_mood_showName); et_mood_content = (EditText) findViewById(R.id.et_mood_content); //接收对象集合 List<Person> persons= getIntent().getParcelableArrayListExtra("persons"); for (Person person:persons){ tv_mood_showName.setText(tv_mood_showName.getText()+"\n"+person.toString()); } } public void ok(View view){ String content=et_mood_content.getText().toString(); Intent intent=new Intent(); intent.putExtra("content",content); //设置结果 setResult(0x1,intent); //自杀,干掉自己,干掉当前的Activity finish(); } }