zoukankan      html  css  js  c++  java
  • [Android Samples视频系列之ApiDemos] AppActivityReceive Result

    1.Demo说明与演示

    该Demo演示了如何使用startActivityForResult从被启动的Activity中得到一个返回结果,主要学到的如下:

    • startActivityForResult的使用
    • Request Code与Result Code的作用

    演示如下:



    2.视频讲解
    http://www.eyeandroid.com/thread-10471-1-1.html

    3.Demo分析

    startActivity可以启动一个新的Activity,这个新的Activity与启动它Activity之间相对独立,不会返回给调用它的Activity如何结果。在写应用时,有时需要从其它Activity返回结果。Receive Result显示了这个用法。

    startActivityForResult 使用方法和startActivity类似,重要的是startActivityForResult可以从被调用的Activity返回结果。GET_CODE为Request code,当子Activity返回结果时可以根据这个Request Code来处理Activity返回的结果。

     
    1. // Definition of the one requestCode we use for receiving resuls.  
    2. static final private int GET_CODE = 0;  
    3.    
    4. private OnClickListener mGetListener = new OnClickListener() {  
    5.     public void onClick(View v) {  
    6.         // Start the activity whose result we want to retrieve.  The  
    7.         // result will come back with request code GET_CODE.  
    8.         Intent intent = new Intent(ReceiveResult.this, SendResult.class);  
    9.         startActivityForResult(intent, GET_CODE);  
    10.     }  
    11. };  

    当子Activity结束时,调用setResult 来设置返回结果。Receive Result例子中涉及了两个Activity, ReceiveResult为父Activity,SendResult为子Activity返回用户选项,返回的结果在ReceiveResult中显示。
    SendResult 返回结果的代码如下:

     
    1. private OnClickListener mCorkyListener = new OnClickListener()  
    2. {  
    3.     public void onClick(View v)  
    4.     {  
    5.         // To send a result, simply call setResult() before your  
    6.         // activity is finished.  
    7.         setResult(RESULT_OK, (new Intent()).setAction("Corky!"));  
    8.         finish();  
    9.     }  
    10. };  
    11.    
    12. private OnClickListener mVioletListener = new OnClickListener()  
    13. {  
    14.     public void onClick(View v)  
    15.     {  
    16.         // To send a result, simply call setResult() before your  
    17.         // activity is finished.  
    18.         setResult(RESULT_OK, (new Intent()).setAction("Violet!"));  
    19.         finish();  
    20.     }  
    21. };  

    当从子Activity返回结果后,父Activity通过定义onActivityResult来处理子Activity返回的结果。

     
    1. protected void onActivityResult(int requestCode, int resultCode,  
    2.         Intent data) {  
    3.         // You can use the requestCode to select between multiple child  
    4.         // activities you may have started.  Here there is only one thing  
    5.         // we launch.  
    6.         if (requestCode == GET_CODE) {  
    7.    
    8.             // We will be adding to our text.  
    9.            ...  
    10.         }  
    11.     }  

    onActivityResult中的三个参数:
    requestCode: 就是在调用startActivityForResult 时的request code,可以使用request code 来区分多个子Acitivity。
    resultCode:为子Activity的返回值,一般为RESULT_OK (正常),RESULT_CANCELLED(取消)。
    Data: Activity的返回结果。例子中为用户选择的Corky或是Violet。



    4.这个Demo我们学会了
    1.startActivityForResult用法详解

    http://www.eyeandroid.com/thread-10257-1-1.html

    2. Android TextView.BufferType实例说明

    http://www.eyeandroid.com/thread-9134-1-1.html

  • 相关阅读:
    LeetCode "Jump Game"
    LeetCode "Pow(x,n)"
    LeetCode "Reverse Linked List II"
    LeetCode "Unique Binary Search Trees II"
    LeetCode "Combination Sum II"
    LeetCode "Divide Two Integers"
    LeetCode "First Missing Positive"
    LeetCode "Clone Graph"
    LeetCode "Decode Ways"
    LeetCode "Combinations"
  • 原文地址:https://www.cnblogs.com/eyeandroid/p/2776632.html
Copyright © 2011-2022 走看看