Android学习笔记(二)Activiy学习——界面传值
来源:互联网 发布:人员去向软件 编辑:程序博客网 时间:2024/05/29 17:05
Activity之间传值方法
先创建A.B两个Activiy,在A与B中分别创建一个按钮button,同时分别创建文本框TextView
Intent传值
在A activity中创建按钮监听
findViewById(R.id.button).setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { //创建一个Intent,能够打开B Activiy Intent i = new Intent(MainActivity.this,Main2Activity.class); //传入数据,参数一传数据名 参数二传数据 i.putExtra("tag","hello world"); startActivity(i); }});在B activity获取到数据
private TextView txView;@Overrideprotected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main2); Intent i = getIntent(); txView = (TextView) findViewById(R.id.TxView); txView.setText(i.getStringExtra("data"));}
Bundle数据包传值
在A activity中创建按钮监听
findViewById(R.id.button).setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { Intent i = new Intent(MainActivity.this,Main2Activity.class); Bundle b = new Bundle(); b.putInt("int",123); b.putString("string","hello world"); //可以直接添加到B i.putExtras(b); //也可以传递Bundle i.putExtra("bundle",b); startActivity(i); }});
在B activity获取到数据
Intent i = getIntent();Bundle data = i.getExtras();txView = (TextView) findViewById(R.id.TxView);//若没有值,可以设置默认值txView.setText( String.format("int = %d string = %s name = %s",data.getInt("int"),data.getString("string"),data.getString("name","default")));//通过key查找bundleBundle data1 = i.getBundleExtra("bundle");
传递自定义类
//传递类时,两种方法,Serializable和Parcelable //Serializable直接在初始化时传递就可以(速度慢,使用简单) //Parcelable需要实现系统的两个方法(速度快,比较支持,使用复杂)
创建class类User
public class User implements Serializable{ private String name; private int age; public int getAge() { return age; } public void setAge(int age) { this.age = age; } public String getName() { return name; } public void setName(String name) { this.name = name; } public User(String name,int age){ this.name = name; this.age = age; }}
在A activity中
findViewById(R.id.button).setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { Intent i = new Intent(MainActivity.this,Main2Activity.class); i.putExtra("user",new User("123",3)); startActivity(i); }});
在B activity中获取
User user = (User)i.getSerializableExtra("123");txView.setText(String.format("%s %d",user.getName(),user.getAge()));
使用Parcelable传递类时
public class User implements Parcelable{ private String name; private int age; protected User(Parcel in) { name = in.readString(); age = in.readInt(); } @Override public void writeToParcel(Parcel dest, int flags) { //保存数据 dest.writeString(name); dest.writeInt(age); } @Override public int describeContents() { return 0; } //创建Creator public static final Creator<User> CREATOR = new Creator<User>() { @Override public User createFromParcel(Parcel in) { //in.readBundle()使用bundle可以写任意数据 //修改返回值 return new User(in.readString(),in.readInt()); } @Override public User[] newArray(int size) { return new User[size]; } }; public int getAge() { return age; } public void setAge(int age) { this.age = age; } public String getName() { return name; } public void setName(String name) { this.name = name; } //构造方法 public User(String name,int age){ this.name = name; this.age = age; }}
获取来自B activity的返回值
在button监听里面添加
Intent i = new Intent(MainActivity.this,Main2Activity.class);
startActivityForResult(i,0);
重写方法
//resultCode为result的返回码,data为Intent返回的数据@Overrideprotected void onActivityResult(int requestCode, int resultCode, Intent data) { super.onActivityResult(requestCode, resultCode, data); data.getStringExtra("data");}
0 0
- Android学习笔记(二)Activiy学习——界面传值
- Android学习笔记(一)Activiy学习——生命周期
- Android学习笔记(三)Activiy学习——启动模式
- Android学习笔记(四)Activiy学习——Intent,context
- Android学习笔记(五)Activiy学习——Service
- xamarin学习笔记A03(安卓Activiy)
- android学习笔记之二:界面展现
- Android 学习笔记(二):引导界面
- IOS学习笔记——基础界面 (二)
- Android Fragment学习笔记(二)----Fragment界面添加和管理
- Android Fragement学习笔记(二)----Fragement界面添加和管理
- Android Fragment学习笔记(二)----Fragment界面添加和管理
- Android Fragment学习笔记(二)----Fragment界面添加和管理
- Android画图学习笔记二—Bitmap
- Android学习笔记二—应用技巧
- android学习笔记——聊天界面的练习
- Android学习笔记——界面相关逻辑
- Android学习笔记3-界面
- 152. Maximum Product Subarray
- react 根据props改变来执行一些操作
- 开博客啦
- Ubuntu WPS字体缺失配置
- 函数指针的调用
- Android学习笔记(二)Activiy学习——界面传值
- jdk8的datetime时间函数使用示例
- #636 – 持续按住按键会多次触发键盘事件(Keyboard Events that Fire When A Key Is Held Down)
- Linux 编程之 VIM 详细配置
- 数据库之-redis
- consul资料
- HDU - 2444 二分图判定 + 最大匹配
- Maven - 构建与命令
- tegra tx1 kernel start up