Android之启动一个activity并且获得回传数据


在Android中,如果想要启动一个activity,可以用startActivity,或者是startActivityForResult(intent, GET_CODE)

如果是想要得到新的activity回传的数据的话,必须使用第二个方法startActivityForResult(intent, GET_CODE);

并且在原来的activity中覆写onActivityResult(int requestCode, int resultCode,Intent data)来对获取的数据进行处理

例如在原来的activity中有如下的代码对接受到的数据进行处理

  1.    /** 
  2.     * 该方法是回调方法,当startActivityForResult启动的activity结束后 
  3.     *   
  4.     * @param requestCode 传递给startActivity()的请求码 
  5.     * @param resultCode 从启动的activity中,在setResult()设置的一个结果码,一般用来标识处理的结果 
  6.     * @param data 用来接受传递过来的数据 
  7.     */  
  8.    @Override  
  9. protected void onActivityResult(int requestCode, int resultCode,  
  10.     Intent data) {  
  11.        if (requestCode == GET_CODE) {  
  12.            Editable text = (Editable)mResults.getText();  
  13.            if (resultCode == RESULT_CANCELED) {  
  14.                text.append("(cancelled)");  
  15.            // Our protocol with the sending activity is that it will send   
  16.            // text in 'data' as its result.   
  17.            } else {  
  18.                text.append("(okay ");  
  19.                text.append(Integer.toString(resultCode));  
  20.                text.append(") ");  
  21.                if (data != null) {  
  22.                    text.append(data.getAction());  
  23.                }  
  24.            }  
  25.            text.append("\n");  
  26.        }  
  27.    }  

在开启新的activity的时候,有下面的程序

  1. //开启一个activity,并且想得到返回数据.  会连同GET_CODE一起返回   
  2. Intent intent = new Intent(ReceiveResult.this, SendResult.class);  
  3. startActivityForResult(intent, GET_CODE);  

在新的activity中有如下的程序
  1. setResult(RESULT_OK, (new Intent()).setAction("Corky!"));  
  2. finish();  

相关内容