首页 > 代码库 > 如何使用 Bundle 传递数据?
如何使用 Bundle 传递数据?
如何使用 Bundle 传递数据?
最近在学习Android的时候,不知道 如何使用Bunndle传递对象?
我们可以通过 Serizlizable 实现。本质就是 将 自定义的对象,转化为 Serizliable 对象。
之后在用的时候 再取出来。
存数据
Void putSerializable(String key,Serializble value);
取数据:
Serializanle getSerizlizble(String key);
代码: mianActivity.java
package com.example.serilizaldemo; import android.app.Activity; import android.content.Intent; import android.os.Bundle; import android.view.Menu; import android.view.View; import android.view.View.OnClickListener; import android.widget.Button; import android.widget.TextView; public class MainActivity extends Activity { private TextView title; private TextView url; private Button button; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); title = (TextView)this.findViewById(R.id.title); url = (TextView)this.findViewById(R.id.url); button = (Button)this.findViewById(R.id.button1); final Game game = new Game(); game.setTitle(title.getText()+""); game.setUrl(url.getText()+""); button.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { // TODO Auto-generated method stub Intent intent = new Intent(MainActivity.this,SecondActiviity.class); // 1 封装 序列化 Bundle bundle = new Bundle(); bundle.putSerializable("love", game); intent.putExtra("game", bundle); startActivity(intent); } }); } @Override public boolean onCreateOptionsMenu(Menu menu) { // Inflate the menu; this adds items to the action bar if it is present. getMenuInflater().inflate(R.menu.main, menu); return true; } }
secondActivity
package com.example.serilizaldemo; import java.io.Serializable; import android.app.Activity; import android.content.Intent; import android.os.Bundle; import android.util.Log; public class SecondActiviity extends Activity { private static final String Tag= "SecondActiviity"; public SecondActiviity() { // TODO Auto-generated constructor stub } @Override protected void onCreate(Bundle savedInstanceState) { // TODO Auto-generated method stub super.onCreate(savedInstanceState); setContentView(R.layout.second); Intent intent = getIntent(); Bundle bundle = intent.getBundleExtra("game"); // 2 反序列化! 取出数据。 Serializable obj = bundle.getSerializable("love"); if(obj != null && obj instanceof Game) { Game g = (Game)obj; Log.i(Tag, "--url="+g.getUrl()); Log.i(Tag, "--title="+g.getTitle()); } Log.i(Tag, "--title="); } }
3 Game 的可序列化
package com.example.serilizaldemo; import java.io.Serializable; import java.util.List; // 实现 可序列化 实现 可续列话 接口 public class Game implements Serializable{ // 定义自己的序号 private final static long serialVersionUID = 1234567890L; private String title; private String url; private long fileSize; // private List<Go> list; public Game() { // TODO Auto-generated constructor stub } public String getTitle() { return title; } public void setTitle(String title) { this.title = title; } public String getUrl() { return url; } public void setUrl(String url) { this.url = url; } public long getFileSize() { return fileSize; } public void setFileSize(long fileSize) { this.fileSize = fileSize; } }
总结:
Bundle 如何传递 对象?
序列化与反序列化
通过序列化 封装对象。
通过反序列化 解析对象。
自定义类 如何实现 序列化?
就是实现 serializable
private final static long serialVersionUID = 1234567890L;
赠送:
基础数据 和 集合 是 可序列化的,
自定义的 类 需要实现 serializable 才可以 实现可序列化!
序列化与反序列化
通过序列化 封装对象。
通过反序列化 解析对象。
自定义类 如何实现 序列化?
就是实现 serializable
private final static long serialVersionUID = 1234567890L;
赠送:
基础数据 和 集合 是 可序列化的,
自定义的 类 需要实现 serializable 才可以 实现可序列化!
如何使用 Bundle 传递数据?
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。