欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  移动技术

Android中activity处理返回结果的实现方式

程序员文章站 2024-02-26 11:06:40
大家在网上购物时都有这样一个体验,在确认订单选择收货人以及地址时,会跳转页面到我们存入网站内的所有收货信息(包含收货地址,收货人)的界面供我们选择,一旦我们点击其中某一条信...

大家在网上购物时都有这样一个体验,在确认订单选择收货人以及地址时,会跳转页面到我们存入网站内的所有收货信息(包含收货地址,收货人)的界面供我们选择,一旦我们点击其中某一条信息,则会自动跳转到订单提交界面,此时的收货信息已经变为我们之前选择的收件信息、

为了实现这个功能,android提供了一个机制,跳转到其他activity时,再返回,可以接受到其他activity返回的值,无需再start新的当前activity;下面的示例中,创建两个activity,其中在mainactivity中提示输入“您的属相”,然后单击textview“您的属相”启动main2activity,在main2activity中选择属相,然后当返回mainactivity时,把之前main2activity中选择的数据原样返回给mainactivity。实现效果如下图:

Android中activity处理返回结果的实现方式

核心实现步骤如下:

(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处理返回结果的实现方式,希望对大家有所帮助