Android中两个Activity之间数据传递及返回问题
程序员文章站
2023-12-19 18:03:22
下面通过一个例子来详细说明
先上代码,再细细分析
mainactivity
public class mainactivity extends activ...
下面通过一个例子来详细说明
先上代码,再细细分析
mainactivity
public class mainactivity extends activity { private button mainbtn=null; private final static int request_code=1; /** called when the activity is first created. */ @override public void oncreate(bundle savedinstancestate) { super.oncreate(savedinstancestate); setcontentview(r.layout.main); mainbtn=(button)findviewbyid(r.id.mainbtn); mainbtn.setonclicklistener(listener); } private onclicklistener listener=new onclicklistener() { @override public void onclick(view v) { intent intent=new intent(); intent.setclass(mainactivity.this, secondactivity.class); intent.putextra("str", "intent demo"); startactivityforresult(intent, request_code); } }; @override protected void onactivityresult(int requestcode, int resultcode, intent data) { if (requestcode==request_code) { if (resultcode==secondactivity.result_code) { bundle bundle=data.getextras(); string str=bundle.getstring("back"); toast.maketext(mainactivity.this, str, toast.length_long).show(); } } } }
由mainactivity 通过最简单的intent.putextra方法,将参数传入,也可以用bundle传入参数,
bundle bundle = new bundle(); bundle.putstring("str", "intent demo"); intent.putextras(bundle);
若需要获得返回值,则用startactivityforresult(),并需要知道返回的一个result_code(int类型),可以理解为指针,用intent.setclass() 确定传递给那个类(这里包括activity、service等)。第二个activity---本例中的secondactivity ,用intent intent=getintent();bundle bundle=intent.getextras();string str=bundle.getstring("str");获得前一个activity传来的参数,这里还需要返回给mainactivity参数,用到了setresult(result_code, intent); 这里 要说明的是result_code必须与前一个activity一致,否则就不能正常返回。而第一个mainactivity通过重写onactivityresult()来取得相应的返回值。
若不需要返回,可以直接用startactivity()。
secondactivity
public class secondactivity extends activity { public final static int result_code=1; private textview secondtxt; private button secondbtn; @override protected void oncreate(bundle savedinstancestate) { super.oncreate(savedinstancestate); setcontentview(r.layout.second); intent intent=getintent(); bundle bundle=intent.getextras(); string str=bundle.getstring("str"); secondtxt=(textview)findviewbyid(r.id.secondtxt); secondtxt.settext(str); secondbtn=(button)findviewbyid(r.id.secondbtn); secondbtn.setonclicklistener(listener); } private onclicklistener listener=new onclicklistener() { @override public void onclick(view v) { intent intent=new intent(); intent.putextra("back", "back data"); setresult(result_code, intent); finish(); } }; }
对于初学者,还得提醒一下,别忘记在androidmanifest.xml添加secondactivity类
<activity android:name=".secondactivity" android:label="@string/app_name"> </activity>
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
推荐阅读
-
Android中两个Activity之间数据传递及返回问题
-
基于startActivityForResult方法处理两个Activity之间数据传递问题
-
Android编程实现两个Activity之间共享数据及互相访问的方法
-
Android 中两个Activity 之间的传值问题
-
基于startActivityForResult方法处理两个Activity之间数据传递问题
-
Android编程实现两个Activity之间共享数据及互相访问的方法
-
Android 中两个Activity 之间的传值问题
-
Android 入门第十讲02-广播(广播概述,使用方法(系统广播,自定义广播,两个activity之间的交互和传值),EventBus使用方法,数据传递,线程切换,Android的系统广播大全)
-
Android中Activity之间的数据传递(Intent和Bundle)