Android 中Activity 之间传递参数
程序员文章站
2023-12-10 20:06:16
android 中activity 之间传递参数
1.传递简单数据
在a activity中
findviewbyid(r.id.startbacticity...
android 中activity 之间传递参数
1.传递简单数据
在a activity中
findviewbyid(r.id.startbacticitybtn).setonclicklistener(new view.onclicklistener() { @override public void onclick(view v) { intent i = new intent(mainactivity.this,theactivity.class); // 对基础的数据类型进行传递 i.putextra("data","我是国人"); startactivity(i); } });
在b activity中接受数据
tv =(textview)findviewbyid(r.id.thetextview); intent i = getintent(); tv.settext(i.getstringextra("data"));
这种传值就是传递基本的数据类型
2.传递数据 包bundle
在a activity中
findviewbyid(r.id.startbacticitybtn).setonclicklistener(new view.onclicklistener() { @override public void onclick(view v) { intent i = new intent(mainactivity.this,theactivity.class); bundle bundle = new bundle(); bundle.putstring("name","qll"); bundle.putint("age",3); // i.putextras(bundle); // 另种传递方式 i.putextra("data",bundle); startactivity(i); } }); }
在b activity中接受数据
tv =(textview)findviewbyid(r.id.thetextview); edittext = (edittext) findviewbyid(r.id.edittext3); intent i = getintent(); // bundle date = i.getextras(); // 接受方式不同 bundle date = i.getbundleextra("data"); tv.settext(string.format("name=%s,age=%d",date.getstring("name"),date.getint("age")));
这总传递方式类似ios中传递字典数据类型过来 。
3.传递值对象
自定义一个user类,传递自定义类需要对类进行序列化
用serializable进行序列化
这种方法只需要类实现serializable接口就可以了
user 类
import java.io.serializable; 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.startbacticitybtn).setonclicklistener(new view.onclicklistener() { @override public void onclick(view v) { intent i = new intent(mainactivity.this,theactivity.class); i.putextra("user",new user("qll",24)); startactivity(i); } }); }
在b activity中
tv =(textview)findviewbyid(r.id.thetextview); user user = (user)i.getserializableextra("user"); tv.settext(string.format("user info(name=%s,age=%d)",user.getname(),user.getage()));
用parcelable实现
同样的需要实现parcelable接口
user 类
package com.example.wyhaiapple.transferdata1; import android.os.parcel; import android.os.parcelable; import android.text.parcelablespan; public class user implements parcelable{ 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; } @override public int describecontents() { return 0; } @override public void writetoparcel(parcel dest, int flags) { dest.writestring(getname()); dest.writeint(getage()); } public static final creator<user> creator = new creator<user>() { @override public user createfromparcel(parcel source) { return new user(source.readstring(),source.readint()); } @override public user[] newarray(int size) { return new user[size]; } }; }
在a activity中 与上面的相同
在b activity中
tv =(textview)findviewbyid(r.id.thetextview); user user = (user)i.getparcelableextra("user"); tv.settext(string.format("user info(name=%s,age=%d)",user.getname(),user.getage()));
4.获取 activity 的返回参数
在b activity中
protected void oncreate(bundle savedinstancestate) { super.oncreate(savedinstancestate); setcontentview(r.layout.activity_the); tv =(textview)findviewbyid(r.id.thetextview); edittext = (edittext) findviewbyid(r.id.edittext3); findviewbyid(r.id.button2).setonclicklistener(new view.onclicklistener() { @override public void onclick(view v) { intent i = new intent(); i.putextra("data",edittext.gettext().tostring()); setresult(1,i); finish(); } }); } }
在a activity中
startactivityforresult(i,0); @override protected void onactivityresult(int requestcode, int resultcode, intent data) { super.onactivityresult(requestcode, resultcode, data); textview.settext("返回的值:"+data.getstringextra("data")); }
如有疑问请留言或者到本站社区交流讨论,感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!