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处理返回结果的实现方式,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对脚本之家网站的支持!

时间: 2024-10-26 10:26:44

Android中activity处理返回结果的实现方式的相关文章

关于android中activity的返回和结束整个程序

返回: 1.使用webview里的goback()方法,可返回到上一个界面. 2.使用finish,可退出当前activity. 3.不过后来试了试.直接用System.exit(0);就可以了返回上一个activity了.不知道有没有什么不可行的.反正是可以用. 退出: ActivityManager activityMgr= (ActivityManager) getSystemService(ACTIVITY_SERVICE ); activityMgr.restartPackage(ge

Android中Activity启动模式详解,可以控制程序按home键后进来还会调用一个自己不喜欢的界面

其实这是很简单的一个问题.但是这还是要对android中activity的启动模式有相当的理解才行,当点击home键的时候,懂Android的人都知道,他会把当前activity放到后退栈中, 栈(Stack)又称堆栈,它是一种运算受限的线性表,其限制是仅允许在表的一端进行插入和删除运算.人们把此端称为栈顶,栈顶的第一个元素被称为栈顶元素,相对地,把另一端称为栈底.向一个栈插入新元素又称为进栈或入栈,它是把该元素放到栈顶元素的上面,使之成为新的栈顶元素:从一个栈删除元素又称为出栈或退栈,它是把栈

应用-android中 activity启动 和数据的传递问题

问题描述 android中 activity启动 和数据的传递问题 有以下两个activity 简称 A B .A是主界面,在A中的onDestory方法中,我删除了用户的临时数据,A里面有一个按钮 可以启动到B 在B里面查询一些数据 然后吧数据传递给A,A获取到数据之后,吧数据显示在A界面上,问题是:当B获取到数据之后,用startActivity(intent)启动到A 把数据传递过去的话 ,这样A就会重新创建一个实例,当我再次按back键返回到B时重新查询数据,这时A就调用了onDesto

简单介绍Android中Activity的四种启动模式_Android

在Android中每个界面都是一个Activity,切换界面操作其实是多个不同Activity之间的实例化操作.在Android中Activity的启动模式决定了Activity的启动运行方式. Activity有四种启动模式: 1. standard,默认的启动模式,只要激活Activity,就会创建一个新的实例,并放入任务栈中,这样任务栈中可能同时有一个Activity的多个实例. 2. singleTop,激活Activity时,如果栈顶是这个Activity,就不会创建新的实例:如果栈顶

Android 中Activity 之间传递参数

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.

Android中Activity滑动关闭的效果

最近感觉有一个Activity关闭的效果挺不错的,就是手势滑动就可以关闭当前Activity,于是就想写一篇博客和大家一起分享下!废话不多说,老规矩,还先上效果图,更直观! 项目地址:https://github.com/xinyitiandi/SlidingFinishDemo 上代码: 1.第一个Activity: package com.ekeguan.slidingfinishdemo; import android.content.Intent; import android.os.B

简单介绍Android中Activity的四种启动模式

在Android中每个界面都是一个Activity,切换界面操作其实是多个不同Activity之间的实例化操作.在Android中Activity的启动模式决定了Activity的启动运行方式. Activity有四种启动模式: 1. standard,默认的启动模式,只要激活Activity,就会创建一个新的实例,并放入任务栈中,这样任务栈中可能同时有一个Activity的多个实例. 2. singleTop,激活Activity时,如果栈顶是这个Activity,就不会创建新的实例:如果栈顶

|||android中activity与fragment之间利用回调函数传递数据|||

问题描述 |||android中activity与fragment之间利用回调函数传递数据||| 最近开始学习android开发,碰上大问题,想实现这样一个效果,点击fragment中的一个button按钮,然后将这个按钮文本传递给activity,同时在activity剩余的布局中也创建一个相同的按钮,,不知道看懂我说的没? 在网上各种找资料说利用fragment向activity传递数据时需要在fragment创建一个回调接口,可是创建好了还是不知道怎么传递,主要问题在于activity中如

android中Activity的singletask模式弹出栈的问题

问题描述 android中Activity的singletask模式弹出栈的问题 07-14 17:48:53.218: E/First(8272): onDestroy 07-14 17:48:53.226: E/Second(8272): onDestroy 07-14 17:48:53.226: E/Third(8272): onPause 07-14 17:48:53.250: E/MAIN(8272): onRestart 07-14 17:48:53.250: E/MAIN(8272