Android中Intent传递对象的两种方法------Serializable传值和Parcelable传值
2015-11-01 21:17
639 查看
Android中Intent传递对象的两种方法的实现:
废话不多说,下面就上代码,我们通过代码来了解两种传值的不同之处:
第一步:新建一个工程,在activity.xml文件中添加如下代码(两个按钮,):
第二步:然后在MainActivity.class中添加如下代码:
说明:为了让大家多了解点开源项目,此处使用了xUtils的注入工具,简化了一些代码(其实此处用xUtils很不合适,应该用butter knife等注解工具,正好有一个XUtils包,就拿来用了o( ̄▽ ̄)d)
SecondActivity.class
ThirdActivity.class
废话不多说,下面就上代码,我们通过代码来了解两种传值的不同之处:
第一步:新建一个工程,在activity.xml文件中添加如下代码(两个按钮,):
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent"> <Button android:id="@+id/btn_parcelable" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentLeft="true" android:layout_below="@+id/btn_serializable" android:layout_marginLeft="91dp" android:layout_marginTop="37dp" android:text="Parcelable" /> <Button android:id="@+id/btn_serializable" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentTop="true" android:layout_alignRight="@+id/btn_parcelable"b( ̄▽ ̄)d android:layout_marginTop="156dp" android:text="Serializable" /> </RelativeLayout>
第二步:然后在MainActivity.class中添加如下代码:
说明:为了让大家多了解点开源项目,此处使用了xUtils的注入工具,简化了一些代码(其实此处用xUtils很不合适,应该用butter knife等注解工具,正好有一个XUtils包,就拿来用了o( ̄▽ ̄)d)
public class MainActivity extends Activity { public static final String SERIALIZ_TAG = "mySerializable"; public static final String PARCEL_TAG = "myParcelable"; @ViewInject(R.id.btn_serializable) Button mSerializable; @ViewInject(R.id.btn_parcelable) Button mParcelable; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); ViewUtils.inject(this); } /** * Serializable传值 * * @param v */ @OnClick(R.id.btn_serializable) public void SerializableTran(View v) { Person mPerson = new Person(); mPerson.setName("雷军"); mPerson.setAge(43); Intent mIntent = new Intent(this, SecondActivity.class); Bundle mBundle = new Bundle(); mBundle.putSerializable(SERIALIZ_TAG, mPerson); mIntent.putExtras(mBundle); startActivity(mIntent); } /** * Parcelable传值 * * @param v */ @OnClick(R.id.btn_parcelable) public void parcelableTran(View v) { Book mBook = new Book(); mBook.setTitle("草样年华"); mBook.setAuthor("孙睿"); mBook.setPublishTime(2004); Intent mIntent = new Intent(this, ThirdActivity.class); Bundle mBundle = new Bundle(); mBundle.putParcelable(PARCEL_TAG, mBook); mIntent.putExtras(mBundle); startActivity(mIntent); } }第三步:新建两个Activity,用于接收并显示传过去的值
SecondActivity.class
public class SecondActivity extends Activity{ @ViewInject(R.id.tv_disinfo) TextView mDisinfo; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_disinfo); ViewUtils.inject(this); initView(); } private void initView() { Person mPerson=(Person)getIntent().getSerializableExtra(MainActivity.SERIALIZ_TAG); mDisinfo.setText("姓名:"+mPerson.getName()+"\t 年龄:"+mPerson.getAge()); } }
ThirdActivity.class
public class ThirdActivity extends Activity{ @ViewInject(R.id.tv_disinfo) TextView mDisinfo; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_disinfo); ViewUtils.inject(this); initView(); } private void initView() { Book mBook=(Book)getIntent().getParcelableExtra(MainActivity.PARCEL_TAG); mDisinfo.setText("书名:"+mBook.getTitle()+"\t 作者:"+mBook.getAuthor()+"\t 出版时间:"+mBook.getPublishTime()); } }
相关文章推荐
- Android GPS GPSBasics project hacking
- 如何解决Android studio已分享到github的项目但是git->commit directory提交不上去
- android 73 下载图片
- Android,Java延迟两秒执行
- Android之ListView的优化
- android 实现自动换行的流布局
- 视频框架 Vitamio 使用教程+部分心得 (四) 滑动控制声音和亮度+android 4.4.X 以上时全屏播放
- Android轻量级ORM框架ActiveAndroid入门教程(转)
- android 读取联系人实例
- 观察者模式(Observer)在Android中的应用:
- android自定义控件(理论知识学习 +自定义属性的讲解)
- Android Debug Bridge(adb)
- Xamarin.Android支付宝SDK Demo
- Android中使用ShareSDK实现分享
- android 中 sqlite sql语句 参数 分析
- Android视频播放框架——封装FFMPEG的Vitamio
- android自定义带有布局视图的对话框
- android 72 确定取消对话框,单选对话框,多选对话框
- Android开发Toast样式总结
- android 调试常用命令