Android——Activity页面之间的数据传递

今天主要讲Activity页面之间的数据传递,在这里我就简单的用代码来和大家讲一下怎么去用,以及一些注意事项。

下面代码是两个页面之间的数据传递

xml代码:

  
  
      
    

  
  
      
      
    

Java代码:

因为数据传递有关于传递对象的部分,所以这里先写个实体类

这里需要注意一下:使用Serializable和Parcelable都可以传递对象,但Serializable只能传递对象,不能传递对象集合

/** 
 * 传递对象实现Serializable类,传递对象集合实现Parcelable类,并重写相对应的方法 
 */  
public class Person implements Parcelable{  
    private int pid;  
    private String pname;  
    private int page;  
  
    protected Person(Parcel in) {  
        pid = in.readInt();  
        pname = in.readString();  
        page = in.readInt();  
    }  
  
    public static final Creator CREATOR = new Creator() {  
        @Override  
        public Person createFromParcel(Parcel in) {  
            return new Person(in);  
        }  
  
        @Override  
        public Person[] newArray(int size) {  
            return new Person[size];  
        }  
    };  
  
    public void setPid(int pid) {  
        this.pid = pid;  
    }  
  
    public void setPname(String pname) {  
        this.pname = pname;  
    }  
  
    public void setPage(int page) {  
        this.page = page;  
    }  
  
    public int getPid() {  
        return pid;  
    }  
  
    public String getPname() {  
        return pname;  
    }  
  
    public int getPage() {  
        return page;  
    }  
  
    public Person(int pid, String pname, int page) {  
        this.pid = pid;  
        this.pname = pname;  
        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);  
    }  
}  
Activity代码:

这里注意:为了这边能获取到数据,页面的跳转要使用startActivityForResult

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.zking.entity.Person;  
  
import java.util.ArrayList;  
  
public class MainActivity extends AppCompatActivity {  
  
    private TextView tv;  
    private EditText et;  
  
    @Override  
    protected void onCreate(Bundle savedInstanceState) {  
        super.onCreate(savedInstanceState);  
        setContentView(R.layout.activity_main);  
        //通过ID来获取下相对应的控件  
        et = (EditText) findViewById(R.id.et_main);  
        tv = (TextView) findViewById(R.id.tv_main);  
    }  
  
    public void write(View v){  
        String uname=et.getText().toString();  
        Intent i=new Intent(this,ThinkActivity.class);  
        //方法一、传递基本数据类型  
        //i.putExtra("uname",uname);  
  
        //方法二、传递Bundle  
//        Bundle b=new Bundle();  
//        b.putString("uname",uname);  
//        i.putExtra("b",b);  
  
        //方法三、传递对象  
//        Person p=new Person(1,uname,20);  
//        i.putExtra("p",p);  
  
        //方法四、传递对象集合  
        ArrayList lt=new ArrayList();  
        Person p1=new Person(1,uname,20);  
        Person p2=new Person(2,uname,30);  
        Person p3=new Person(3,uname,40);  
        lt.add(p1);  
        lt.add(p2);  
        lt.add(p3);  
        i.putParcelableArrayListExtra("lt",lt);  
  
        //带有目的的传  
        startActivityForResult(i,0x201);  
    }  
  
    //得到从另一个页面返回的结果  
    @Override  
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {  
        super.onActivityResult(requestCode, resultCode, data);  
        String content=data.getStringExtra("content");  
        tv.setText(content);  
    }  


import android.content.Intent;  
import android.support.v7.app.AppCompatActivity;  
import android.os.Bundle;  
import android.util.Log;  
import android.view.View;  
import android.widget.EditText;  
import android.widget.TextView;  
  
import com.zking.entity.Person;  
  
import java.util.List;  
  
public class ThinkActivity extends AppCompatActivity {  
  
    private TextView tv;  
    private EditText et;  
  
    @Override  
    protected void onCreate(Bundle savedInstanceState) {  
        super.onCreate(savedInstanceState);  
        setContentView(R.layout.activity_think);  
        tv = (TextView) findViewById(R.id.tv_think);  
        et = (EditText) findViewById(R.id.et_think);  
        //获取第一个页面传递过来的数据  
//        String uname=getIntent().getStringExtra("uname");  
  
        //接收Bundle  
//        Bundle b=getIntent().getBundleExtra("b");  
//        String uname=b.getString("uname");  
  
        //接收对象  
//        Person p= (Person) getIntent().getSerializableExtra("p");  
  
        //接收对象集合  
        List lt=getIntent().getParcelableArrayListExtra("lt");  
        for (Person person : lt) {  
            tv.setText(tv.getText()+person.toString());  
        }  
    }  
  
    public void ok(View v){  
        String content=et.getText().toString();  
        Intent i=new Intent();  
        i.putExtra("content",content);  
        //设置结果  
        setResult(0x1,i);  
        //自杀(干掉自己,干掉当前的Activity)  
        finish();  
    }  
}  




你可能感兴趣的:(Android——Activity页面之间的数据传递)