Android中activity处理返回结果的实现方式
大家在网上购物时都有这样一个体验,在确认订单选择收货人以及地址时,会跳转页面到我们存入网站内的所有收货信息(包含收货地址,收货人)的界面供我们选择,一旦我们点击其中某一条信息,则会自动跳转到订单提交界面,此时的收货信息已经变为我们之前选择的收件信息、
为了实现这个功能,android提供了一个机制,跳转到其他activity时,再返回,可以接受到其他activity返回的值,无需再start新的当前activity;下面的示例中,创建两个activity,其中在mainactivity中提示输入“您的属相”,然后单击textview“您的属相”启动main2activity,在main2activity中选择属相,然后当返回mainactivity时,把之前main2activity中选择的数据原样返回给mainactivity。实现效果如下图:
核心实现步骤如下:
(1)在mainactivity中设置启动带结果requestcode的activity
(2)在mainactivity中设置处理返回结果的方法
(3)在main2activity中设置返回结果
具体布局以及功能实现代码如下:
(1)layout中activity_main.xml首页布局:
<?xml version="1.0" encoding="utf-8"?> <linearlayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:id="@+id/activity_main" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" tools:context="com.example.administrator.testactivity.mainactivity"> <textview android:id="@+id/tv1" android:layout_width="match_parent" android:layout_height="wrap_content" android:hint="潘侯爷的属相" android:gravity="center" android:textsize="30sp"/> <button android:id="@+id/btn1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="right" android:text="确定"/> </linearlayout>
(2)layout中activity_main2.xml第二页布局:
<?xml version="1.0" encoding="utf-8"?> <relativelayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:id="@+id/activity_main2" android:layout_width="match_parent" android:layout_height="match_parent" tools:context="com.example.administrator.day15.main2activity"> <listview android:id="@+id/lv" android:layout_width="match_parent" android:layout_height="match_parent"></listview> </relativelayout>
(3)java中首页布局mainactivity.java实现代码:
import android.content.intent; import android.support.v7.app.appcompatactivity; import android.os.bundle; import android.view.gravity; import android.view.view; import android.widget.button; import android.widget.textview; import android.widget.toast; public class mainactivity extends appcompatactivity { private button btn1; private textview tv1; @override protected void oncreate(bundle savedinstancestate) { super.oncreate(savedinstancestate); setcontentview(r.layout.activity_main); btn1 = (button) findviewbyid(r.id.btn1); tv1 = (textview) findviewbyid(r.id.tv1); tv1.setclickable(true); tv1.setonclicklistener(new view.onclicklistener() { @override public void onclick(view v) { intent intent = new intent(mainactivity.this, main2activity.class); //设置启动intent以及对应的请求码 startactivityforresult(intent, 2); } }); btn1.setonclicklistener(new view.onclicklistener() { @override public void onclick(view v) { toast t= toast.maketext(mainactivity.this, tv1.gettext().tostring(), toast.length_short); t.setgravity(gravity.top,0,0); t.show(); } }); } @override protected void onactivityresult(int requestcode, int resultcode, intent data) { super.onactivityresult(requestcode, resultcode, data); //建议添加逻辑判断(使请求码与结果码配对,确保返回结果是请求码所请求的) tv1.settext(data.getstringextra("select")); } }
(4)java中第二页页布局main2activity.java实现代码:
import android.content.intent; import android.support.v7.app.appcompatactivity; import android.os.bundle; import android.view.view; import android.widget.adapterview; import android.widget.arrayadapter; import android.widget.listview; public class main2activity extends appcompatactivity { private listview lv; string[] names={"马","牛","虎","兔","龙"}; @override protected void oncreate(bundle savedinstancestate) { super.oncreate(savedinstancestate); setcontentview(r.layout.activity_main2); lv = (listview) findviewbyid(r.id.lv); //使用arrayadapter为listview每个单元格填充数据 arrayadapter<string> adapter = new arrayadapter<string>(main2activity. this,android.r.layout.simple_list_item_single_choice,names); //设置listview为单选模式 lv.setchoicemode(listview.choice_mode_single); //为listview中的每个iterm设置单击事件 lv.setonitemclicklistener(new adapterview.onitemclicklistener() { @override public void onitemclick(adapterview<?> parent, view view, int position, long id) { intent intent =new intent(main2activity.this, mainactivity.class);; //将选中的item对应的信息配上键值装入extra*传递用 intent.putextra("select",names[position]); //设置3为结果码 setresult(3,intent); finish();//结束当前activity,返回上一个activity } }); lv.setadapter(adapter); } }
以上所述是小编给大家介绍的android中activity处理返回结果的实现方式,希望对大家有所帮助
上一篇: Everything搜索快捷键用指定编辑器打开文件
下一篇: 深入讲解Java 9中的九个新特性