Android中Intent的传值和传对象的总结。

这是我的第一篇博客,开发安卓也有很长的时间了,头一次兴起了写博客的欲望,我会记录一些项目中实际遇到的一些问题,一方面希望可以帮助大家,一方面也算是我个人的总结,今天记录一下简单的Android中常用的Intent传递数据:

传递普通数据:

在实际开发中经常用到Intent传递普通数据,如ID等,然后去下一个页面去进行操作。不说废话,直接上代码。
- 从LoginActivity页面传值到MainActivity页面

public class LoginActivity extends Activity {
    @Bind(R.id.btn)
    Button btn;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_login);
        ButterKnife.bind(this);
    }
    @OnClick({R.id.btn})
    public void onClick(View view) {
        switch (view.getId()) {
            case R.id.btn:
                Intent intent = new Intent();
                intent.putExtra("id", "666");
                intent.setClass(LoginActivity.this, MainActivity.class);
                startActivity(intent);
                break;
        }
    }
}
  • MainActivity页面接收从LoginActivity页面传递的值:
public class MainActivity extends Activity {
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        String id = getIntent().getStringExtra("id");
        System.out.println("id:"+id);
    }
}
  • 结果:
    12-30 13:53:37.297 6996-6996/? I/System.out: id:666

传递一个对象

在移动开发中传递一个对象的时候不算太常见,至少在我实际开发的时候遇到的不多,刚开始也是上网找资料,然后遇到了各种各样的坑,网上的资料也是东一块西一块的,使用起来也不是太明朗。Android中Intent传递类对象提供了两种方式一种是 通过实现Serializable接口传递对象,一种是通过实现Parcelable接口传递对象。我只以其一为例。
- 首先我们先创立一个对象 LoginBean
在我的项目里面,我是把从网络请求的数据放在对象里面,在公司开发中,一般的JSON格式是这样的:

{
    "data": [
        {
            "id": "100001"
        }
    ],
    "msg": "success",
    "result": "true"
}

然后使用Android Studio中的GsonFormat生成相关变量(因为使用private代码太多不容易看所以使用public):

注:在被传递的对象里面,所有的类一定要实现Serializable接口,否则会报java.lang.RuntimeException: Parcelable encountered IOException writing serializable object异常。

public class LoginBean implements Serializable {

    public String msg;
    public String result;
    public List<DataBean> data;

    public static class DataBean implements Serializable {
        public String id;
    }
}

-登录页面的LoginActivity传递LoginBean对象到MainActivity

public class LoginActivity extends Activity {
    @Bind(R.id.btn)
    Button btn;
    private LoginBean loginBean;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_login);
        ButterKnife.bind(this);
//模拟一下网络请求回来的GSON格式的值
        String s = "{\"data\":[{\"id\":\"100001\"}],\"msg\":\"success\",\"result\":\"true\"}";
//        使用gson-2.3.1.jar包
        Gson gson = new Gson();
        loginBean = gson.fromJson(s, LoginBean.class);
    }
    @OnClick({R.id.btn})
    public void onClick(View view) {
        switch (view.getId()) {
            case R.id.btn:

                Intent intent = new Intent();
                intent.setClass(LoginActivity.this, MainActivity.class);
                Bundle bundle = new Bundle();
                bundle.putSerializable("LoginBean", loginBean);
                intent.putExtras(bundle);
                this.startActivity(intent);
                break;
        }
    }
}

-MainActivity接收LoginActivity传递过来的对象

public class MainActivity extends Activity {
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        Intent intent = this.getIntent();
        LoginBean loginBean = (LoginBean) intent.getSerializableExtra("LoginBean");

        System.out.println("id:"+loginBean.data.get(0).id);
    }
}
  • 结果:
    12-30 14:48:32.917 16502-16502/? I/System.out: id:100001

黑夜无论怎样悠长,白昼总会到来。 —-莎士比亚

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值