Activity页面之间数据传递

来源:互联网 发布:windows垃圾清理软件 编辑:程序博客网 时间:2024/06/16 19:16

要传递的对象集合(Person实体类)的代码:

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];        }    };    public int getPid() {        return pid;    }    public void setPid(int pid) {        this.pid = pid;    }    public String getPname() {        return pname;    }    public void setPname(String pname) {        this.pname = pname;    }    public int getPage() {        return page;    }    public void setPage(int page) {        this.page = page;    }    @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);    }}


MainActivity的代码:

<EditText    android:layout_width="match_parent"    android:layout_height="wrap_content"    android:hint="请输入用户名:"    android:id="@+id/et_main_uname"    /><Button    android:layout_width="match_parent"    android:layout_height="wrap_content"    android:text="写心情"    android:onClick="writeThink"    /> <TextView     android:layout_width="wrap_content"     android:layout_height="wrap_content"     android:id="@+id/tv_main_showThink"     />
设置它的排列方式为垂直排列

MainActivity的activity跳转的代码

      

 private EditText et_main_uname;    private TextView tv_main_showThink;    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);
          //获取输入框的ID        et_main_uname = (EditText) findViewById(R.id.et_main_uname);
           //获取文本框的ID        tv_main_showThink = (TextView) findViewById(R.id.tv_main_showThink);        Log.i("test","onCreate");    }
//写心情的方法    public void writeThink(View view){
         //获取输入框输入的内容         String uname=et_main_uname.getText().toString();
          //把对象集合传递到ThinkActivity页面         Intent intent=new Intent(this,ThinkActivity.class);
           //实例化对象           Person person1=new Person(1,"静静",19);           Person person2=new Person(2,"明明",19);           Person person3=new Person(3,"雨田君",19);
          //实例化Person集合        ArrayList<Person> persons=new ArrayList<>();
          //将对象加入Person集合        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");
          //给输入框设置获取到的ThinkActivity的心情输入框内容        tv_main_showThink.setText(content);    }


跳转的activity:
                    ThinkActivity的代码:


<TextView    android:layout_width="wrap_content"    android:layout_height="wrap_content"    android:id="@+id/tv_think_showName"    /><EditText    android:layout_width="match_parent"    android:layout_height="wrap_content"    android:lines="5"    android:hint="请写心情"    android:gravity="top"    android:id="@+id/et_think_content"    /><Button    android:layout_width="match_parent"    android:layout_height="wrap_content"    android:text="确定"    android:onClick="ok"    />

ThinkActivity代码:

                                   

public class ThinkActivity extends AppCompatActivity {    private TextView tv_think_showName;    private EditText et_think_content;    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_think);        tv_think_showName = (TextView) findViewById(R.id.tv_think_showName);        et_think_content = (EditText) findViewById(R.id.et_think_content);        //接受对象集合        List<Person> persons=getIntent().getParcelableArrayListExtra("persons");
        //设置文本大小        tv_think_showName.setTextSize(30);
        //循环遍历Person集合        for (Person person : persons) {
              //给文本框设置            tv_think_showName.setText(tv_think_showName.getText()+"\n"+person.toString());        }    }
    //返回MainActivity并传递心情内容    public void ok(View view){
          //获取输入框内容        String content=et_think_content.getText().toString();
           //new一个传递员        Intent intent=new Intent();
         //intent开始传递内容        intent.putExtra("content",content);        //设置结果        setResult(0x100,intent);        //自杀(干掉自己,干掉当前的Activity)        finish();    }}


原创粉丝点击