这是我的第一篇博客,开发安卓也有很长的时间了,头一次兴起了写博客的欲望,我会记录一些项目中实际遇到的一些问题,一方面希望可以帮助大家,一方面也算是我个人的总结,今天记录一下简单的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
黑夜无论怎样悠长,白昼总会到来。 —-莎士比亚