android startActivityForResult的使用方法介绍

Activity 跳转 都知道用startActivity(Intent)
但是如果下面情况呢?
Activity1 跳转到 Activity2  但是还需要在Activity2 再回到 Activity1呢? 可能有人说: 那我在Activity2  再使用 startActivity() 不就可以了 是的 但是 startActivityForResult() 能够直接完成这项工作
[示例]
Activity1: 有2个EditText 用于接收用户输入的2个字符串 要求把这2个字符串连接起来 我现在把连接的工作交给 Activity2 来做 并且把连接好后的字符串再返回给 Activity1 并由它负责显示
[代码]
1. 构建 Activity1 所需的界面
Java代码


代码如下:

<?xml version="1.0" encoding="utf-8"?>  
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:orientation="vertical" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    >  
<EditText    
    android:id="@+id/first" 
    android:layout_width="fill_parent"   
    android:layout_height="wrap_content"   
    />  
<EditText    
    android:id="@+id/second" 
    android:layout_width="fill_parent"   
    android:layout_height="wrap_content"   
    />  
<Button    
    android:id="@+id/start" 
    android:layout_width="fill_parent"   
    android:layout_height="wrap_content"   
    android:text="start" 
    />  
<TextView    
    android:id="@+id/text" 
    android:layout_width="fill_parent"   
    android:layout_height="wrap_content"   
    android:text="...is waiting" 
    />  
</LinearLayout>

2. 得到2个EditText的用户输入

代码如下:

first = (EditText) findViewById(R.id.first);  
        second = (EditText) findViewById(R.id.second);

3. 把字符串装入Bundle 再放置于Intent 然后发送之

代码如下:

Intent i = new Intent(this, Activity2.class);

Bundle b = new Bundle();

b.putString("first", first.getText().toString());  
        b.putString("second", second.getText().toString());

i.putExtras(b);

startActivityForResult(i,10);

补充:

代码如下:

public void startActivityForResult (Intent intent, int requestCode)

Intent intent:系统会根据这个确定目的Activity

int requestCode:用于标识该Intent 回来后确定是不是想要的返回

4. 注册View监听器

代码如下:

findViewById(R.id.start).setOnClickListener(new OnClickListener(){  
            public void onClick(View v) {  
                // TODO Auto-generated method stub  
                sendCalculate();  
            }  
        });

5. 构建 Activity2 的界面 把处理的结果返回

代码如下:

<?xml version="1.0" encoding="utf-8"?>  
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:orientation="vertical" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    >  
<Button    
    android:id="@+id/reply" 
    android:layout_width="fill_parent"   
    android:layout_height="wrap_content"   
    android:text="reply" 
    />  
</LinearLayout>

6. 得到传入的Intent 以及传过来的2个字符串 并连接之

代码如下:

Intent i = this.getIntent();

Bundle b = i.getExtras();

String v1 = b.getString("first");  
        String v2 = b.getString("second");

value = v1 + v2;

7. 定义Intent 并存放返回结果 并返回之

代码如下:

Intent i = new Intent();

Bundle b = new Bundle();  
        b.putString("CALCULATION", value);

i.putExtras(b);

this.setResult(RESULT_OK, i);  
        this.finish();

8. 事情完成了么? 当然没有 别忘了 Activity1 还要接收数据并显示之

代码如下:

protected void onActivityResult(int requestCode, int resultCode,  
                                    Intent data){  
        switch (resultCode){  
        case RESULT_OK:  
            Bundle b = data.getExtras();

String string = b.getString("CALCULATION");

updateText(string);  
        }  
    }

(0)

相关推荐

  • android开发教程之startActivityForResult使用方法

    最近做的一个小东西遇到这样的情况,我从一个页面MainActivity修改一些内容,需要跳转到一个新的EditActivity去做修改操作,修改完成后就回到之前的MainActivity,因为信息被修改了,最好还是从服务器上重新获取一下,那么就要在MainActivity里重新获取,假如把重新获取数据的操作放在MainActivity的onStart()方法里,那么MainActivity跳转到其它的地方再回来不需要请求数据的,它也必然会又请求一次,这样就白白的增大了服务器的压力. 也就是说,要

  • Android基础之startActivityForResult()的用法详解

    前言 安卓开发中一个很基础的操作就是打开一个 Activity ,另一个很必要的操作就是,打开一个 Activity ,在打开的 Activity 中操作之后并获得返回结果. 两个 Activity 为了演示这个操作,我们需要两个 Activity : MainActivity 和 OtherActivity ,在 MainActivity 中通过 Intent 启动 OtherActivity ,并获得 OtherActivity 结束后返回的结果,例子仅作演示,为了方便,我直接在 Java

  • Android startActivityForResult实例详解

    Android startActivityForResult实例详解 startActivityForResult用于两个activity之间的数据传递,Activity1传值给Activity2,Activity2再返回值给Activity1. 第一步:Activity1中:startActivityForResult(Intent intent, Int requestCode) Intent intent = new Intent(); intent.setClass(Activity1.

  • 基于android startActivityForResult的学习心得总结

    从昨晚到现在终于调试通了一个startActivityForResult的例子,网上要么有些说的太复杂了,要么说的含糊,搞的我走了很多弯路,所以写篇心得.在一个主界面(主Activity)上能连接往许多不同子功能模块(子Activity上去),当子模块的事情做完之后就回到主界面,还同时返回一些子模块完成的数据交给主Activity处理.  用startActivity启动主界面是一个新的Intent实例,而访问的主界面还在activity栈的下面没有调出来,这样做的一个最大的问题是,回不到原界面

  • android startActivityForResult的使用方法介绍

    Activity 跳转 都知道用startActivity(Intent)但是如果下面情况呢?Activity1 跳转到 Activity2  但是还需要在Activity2 再回到 Activity1呢? 可能有人说: 那我在Activity2  再使用 startActivity() 不就可以了 是的 但是 startActivityForResult() 能够直接完成这项工作[示例]Activity1: 有2个EditText 用于接收用户输入的2个字符串 要求把这2个字符串连接起来 我现

  • Android判断是否Root方法介绍

    为了照顾那些着急的同学,先直接给出结论: private static final String[] rootRelatedDirs = new String[]{ "/su", "/su/bin/su", "/sbin/su", "/data/local/xbin/su", "/data/local/bin/su", "/data/local/su", "/system/xb

  • Android LeakCanary的使用方法介绍

    目录 1.LeakCanary 如何自动初始化 2.LeakCanary如何检测内存泄漏 2.1LeakCanary初始化时做了什么 2.2LeakCanary如何触发检测 2.3LeakCanary如何检测泄漏的对象 2.4弱引用 WeakReference 1.LeakCanary 如何自动初始化 LeakCanary只需添加依赖就可以实现自动初始化.LeakCanary是通过ContentProvider实现初始化的,在ContentProvider 的 onCreate方法中初始化Lea

  • Android shape标签使用方法介绍

    目录 shape标签基本使用语法 Shape标签生成GradientDrawable对象 GradientDrawable获取shape子标签属性 GradientDrawable进行shape绘制 作为Android开发,shape标签的使用定然不陌生. shape标签基本使用语法 <?xml version="1.0" encoding="utf-8"?> <shape xmlns:android="http://schemas.an

  • Android手机使用Fiddler方法介绍

    Fiddler是一款免费的抓包.调试工具,比Wireshark要小巧,更简洁,本节就来介绍如何通过WIFI来抓取Android手机的HTTP和HTTPS包. 一.连接Android手机 1.1.手机端配置 电脑配置WIFI后,手机需要设置当前WIFI的代理,而这个代理地址可以通过电脑的"ipconfig"命令得到,如下图所示: 以上的192.168.191.1就是本机的IP地址,然后在手机端的WIFI的高级设置中将代理地址设置为查询到的IP,端口号码自己定义,一会儿要用到,IP代理模式

  • Android popupwindow简单使用方法介绍

    先看下效果 1.首页 package com.yskj.jh.demopopupwindow; import android.content.Context; import android.graphics.drawable.BitmapDrawable; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.view.LayoutInflater; import and

  • Android 拍照后返回缩略图的两种方法介绍

    目录 前言: 一.这就是第一种方法,比较简单,不用将图片保存到手机本地存储下来. 二.第二种方法 总结 前言: 如果简单地拍照片并非您应用的主要目标,那么您可能希望从相机应用中获取图片并对该图片执行一些操作. 一.这就是第一种方法,比较简单,不用将图片保存到手机本地存储下来. 下面我们看具体代码: 1.首先是布局文件activity_photothumbnail.xml <?xml version="1.0" encoding="utf-8"?> <

  • android真机调试时无法显示logcat信息的解决方法介绍

    android真机调试时无法显示logcat信息的解决方法介绍: window-->show view-->android->devices, 打开devices,点击右边的截屏图片的按钮.等到出现截图的时候,logcat就出来信息了!

  • Android 中LayoutInflater.inflate()方法的介绍

    Android 中LayoutInflater.inflate()方法的介绍 最近一直想弄明白LayoutInflater对象的inflate方法的用法,今天做了实例. <LinearLayout android:id="@+id/ll_item_Group" android:layout_width="match_parent" android:layout_height="200dp" android:background="

  • Android开发实现文件关联方法介绍

    Android开发实现文件关联方法,做一个项目的时候,需要点击文件打开我们自己的app.首先讲一下点击普通文件打开app的方法,只需要三行代码,在app启动活动里加一个过滤器. <intent-filter> <category android:name="android.intent.category.LAUNCHER"> </category></action></intent-filter> <intent-fil

随机推荐