Android--使用Intent传递数据

第一种方法

发送数据:

Intent i=new Intent(TransmitData.this,GetData.class);
i.putExtra("data","Hello world");
startActivity(i);

接收数据:

Intent i=getIntent();
String data = i.getStringExtra("data");

第二种方法:利用Bundle传递基本数据

发送数据:

  Intent i=new Intent(TransmitData.this,GetData.class);
  Bundle b=new Bundle();
  b.putString("name","zhangsan");
  b.putInt("password",123);
  i.putExtras(b);
  startActivity(i);

接收数据:

Intent i=getIntent();
Bundle b=i.getExtras();
String name = b.getString("name");
int password = b.getInt("password");

第三种:传递实体类数据:

发送数据:
需要注意的是:实体类必须继承那两个方法,不能强转,强转会报错

Intent i=new Intent(TransmitData.this,GetData.class);
//需要实体类实现Serializable或者Parcelable接口。这里使用的是Serializable,因为bean类不用去实现方法,交由系统进行序列化
i.putExtra("data",  new User("zhangsan",123));
startActivity(i);

接收数据:

Intent i=getIntent();
User user= (User) i.getSerializableExtra("data");

实体类代码:

public class User implements Serializable {
    private String name;
    private int password;

    public User(String name, int password) {
        this.name = name;
        this.password = password;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public int getPassword() {
        return password;
    }

    public void setPassword(int password) {
        this.password = password;
    }

    @Override
    public String toString() {
        return "User{" +
                "name='" + name + '\'' +
                ", password=" + password +
                '}';
    }
}

第四种:用一个activity打开另一个activity,请求返回数据到第一个activity

请求数据:这里用的是一个按钮打开一个页面

Intent i=new Intent(TransmitData.this,GetData.class);
//想要另一个activity能返回数据,必须使用这个方法
//第二个参数是:请求码。
startActivityForResult(i,0);

处理返回的数据方法,在第一个activity加上这个方法。这里是将返回的数据设置了文本

    /**
     * 用于接收activity返回的数据
     * @param requestCode 请求码
     * @param resultCode 状态码
     * @param data 返回的数据
     */
    @Override
    protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
        super.onActivityResult(requestCode, resultCode, data);
        tv_one.setText(""+data.getStringExtra("data"));
    }

返回数据:这里用一个按钮加一个输入栏,将输入栏的数据返回。

 btn_one.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Intent i=new Intent();
                i.putExtra("data",et_one.getText().toString());
                //设置返回值:
                //第一个参数是状态码:任意填,一般是为了标记成功或失败。
                //第二个参数是Intent能充当数据的载体,这里是为了返回数据
                setResult(1,i);
                //结束activity
                finish();
            }
        });
发布了117 篇原创文章 · 获赞 1 · 访问量 7079

猜你喜欢

转载自blog.csdn.net/qq_43616001/article/details/104238635