安卓Activity之间的数据传递四种方法,以及数据回传的实现

安卓Activity之间的数据传递四种方法,以及数据回传的实现

2023年7月7日发(作者:)

安卓Activity之间的数据传递四种⽅法,以及数据回传的实现显式Intent来跳转页⾯和传递数据:Intent intent=new Intent(,);ra("显式数据","显⽰意图Intent传送数据");startActivity(intent);接受数据时:TextView txtshow=(TextView)findViewById(w); Intent intent =getIntent(); t(ingExtra("显式数据")); n(ingExtra("显式数据"));隐式Intent来执⾏⼀个动作,这个动作可以是系统⾃⼰定义的,⽐如发短信,打电话等等,action可以在中定义 使⽤时:Intent intent =new Intent("ReceiveData");//为Intent添加动作egory("T");//Category定义当前动作(Action)被执⾏的环境,如果不符合这个环境将⽆法激活,如,CATEGORY_DEFAULT ,默认环境,所有intent都能激活startActivity(intent);//很奇怪,只会跳转到某个没有控件的界⾯Bundle作为媒介:Bundle bundle=new Bundle(); Intent intent =new Intent(,); ing("Bundle","Bundle传输数据"); ra("Message",bundle); startActivity(intent);Serializable:我们要创建⼀个类,并且让这个类(执⾏)implements Serializable如:package pes;import izable;public class Serial implements Serializable { public int getUserno() { return userno; } public void setUserno(int userno) { = userno; } public String getUsername() { return username; } public void setUsername(String username) { me = username; } private int userno; private String username;}接受数据代码:Bundle bundle=getIntent().getBundleExtra("Message"); Bundle的代码和序列化的代码不可以同时运⾏,所以运⾏哪⼀个就把哪⼀个给注释 t(ing("Bundle"));使⽤时:Serial serial=new Serial();rname(“张三”);rno(001);Intent intent=new Intent(,);ra(“序列化”,serial);startActivity(intent);接受数据时:Serial serial=(Serial)getIntent().getSerializableExtra("序列化"); t("序列化显⽰:n ⽤户名:"+rname());数据回传的实现数据回传指的是,你可以在活动⼀中⽤intent传输数据给活动⼆,并且定义⼀个请求码,这个请求码是区分哪个到底是哪个活动发起的数据回调,因为很多个活动都要求数据回调时,系统会分不清数据到底是给哪⼀个,我们在活动⼆⾥⾯也要定义⼀个结果码,它是为了区分到底是哪⼀个回调数据,因为活动⼆可能会回调很多个数据给活动⼀,如果没有结果码,那么活动⼀⽆法区分到底结果。(注意,发起回调的活动同时可以给返回结果的活动传输数值)下⾯给代码:请求回传的活动:Intent intent =new Intent(,);//实现页⾯跳转 Bundle bundle=new Bundle();//定义⼀个Bundle装⼊数值 ing("name","⼩洪⾔"); ("age",20); ra("grilfriend",bundle);//将Bundle装⼊intent⾥⾯ startActivityForResult(intent,1);//要想得到数据回传就i必须要⽤startActivityForResult 第⼀个参数是我们定义的intent,第⼆个参数是请求码(request code)回传数据的活动:TextView txtshow2=(TextView)findViewById(w2); Intent intent=getIntent(); t("姓名:"+dleExtra("grilfriend").getString("name")+"n年龄:"+dleExtra("grilfriend").getInt("age")); ra("boyfriend","何佳洋"); setResult(1,intent);//第⼀个参数是结果码,区分到底是哪⼀个然后第三步,我们要在发起请求数据回调的活动写⼀个⽅法,来操作返回的数据:protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) { vityResult(requestCode, resultCode, data); if(requestCode==1) { if(resultCode==1) { TextView txtshow=(TextView)findViewById(urn); String s; s=ingExtra("boyfriend"); n(s); t(s); } } }下⾯给出总代码::package pes;import le;import patActivity;import ;import ;import ;import ;import ew;public class MainActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { te(savedInstanceState); setContentView(ty_main); Button btnintentxian=(Button)findViewById(entxian); Button btnintentyin=(Button)findViewById(entyin); Button btnbundle=(Button)findViewById(dle); Button btnserializable=(Button)findViewById(ializable); Button btnreturn=(Button)findViewById(urn); lickListener(new kListener() { @Override public void onClick(View v) { Intent intent=new Intent(,); ra("显式数据","显⽰意图Intent传送数据"); startActivity(intent); } }); lickListener(new kListener() { @Override public void onClick(View v) { Intent intent =new Intent("ReceiveData");//为Intent添加动作 egory("T"); //Category定义当前动作(Action)被执⾏的环境,如果不符合这个环境将⽆法激活,如,CATEGORY_DEFAULT ,默认环境,所有intent都能激活 startActivity(intent);//很奇怪,只会跳转到某个没有控件的界⾯ } }); lickListener(new kListener() { @Override public void onClick(View v) { Bundle bundle=new Bundle(); Intent intent =new Intent(,); ing("Bundle","Bundle传输数据"); ra("Message",bundle); startActivity(intent); } }); lickListener(new kListener() { @Override public void onClick(View v) { Serial serial=new Serial(); rname("张三"); rno(001); Intent intent=new Intent(,); ra("序列化",serial); startActivity(intent); } }); lickListener(new kListener() { @Override public void onClick(View v) { Intent intent =new Intent(,); Bundle bundle=new Bundle(); ing("name","⼩洪⾔"); ("age",20); ra("grilfriend",bundle); startActivityForResult(intent,1); } }); } @Override protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) { vityResult(requestCode, resultCode, data); if(requestCode==1) { if(resultCode==1) { TextView txtshow=(TextView)findViewById(urn); String s; s=ingExtra("boyfriend"); n(s); t(s); } } }}:package pes;import patActivity;import ;import ;import ;import ;import ew;public class ReceiverActivity extends AppCompatActivity {@Overrideprotected void onCreate(Bundle savedInstanceState) { te(savedInstanceState); setContentView(ty_receiver); TextView txtshow=(TextView)findViewById(w);// Intent intent =getIntent();// t(ingExtra(“显式数据”));// n(ingExtra(“显式数据”));//Bundle///// Bundle bundle=getIntent().getBundleExtra(“Message”); Bundle的代码和序列化的代码不可以同时运⾏,所以运⾏哪⼀个就把哪⼀个给注释// t(ing(“Bundle”));Serializable//// Serial serial=(Serial)getIntent().getSerializableExtra(“序列化”);// t(“序列化显⽰:n ⽤户名:”+rname());}}:package pes;import patActivity;import ;import ;import ew;public class ReturnActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { te(savedInstanceState); setContentView(ty_return); TextView txtshow2=(TextView)findViewById(w2); Intent intent=getIntent(); t("姓名:"+dleExtra("grilfriend").getString("name")+"n年龄:"+dleExtra("grilfriend").getInt("age")); ra("boyfriend","何佳洋"); setResult(1,intent); }}:package pes;import izable;public class Serial implements Serializable { public int getUserno() { return userno; } public void setUserno(int userno) { = userno; } public String getUsername() { return username; } public void setUsername(String username) { me = username; } private int userno; private String username;}

发布者:admin,转转请注明出处:http://www.yc00.com/news/1688674574a161653.html

相关推荐

发表回复

评论列表(0条)

  • 暂无评论

联系我们

400-800-8888

在线咨询: QQ交谈

邮件:admin@example.com

工作时间:周一至周五,9:30-18:30,节假日休息

关注微信