使用意图传递数据之返回结果

在一个Activity中通过意图启动另一个Activity,并且希望被启动的Activity回传结果过去,这时候就需要startActivityForResult(intent)来调用Activity, 并且重写onActivityResult()方法,它会被回调,做接收结果的一些操作。

下面通过一个实例来演示如何使用:

工程结构:


运行结果:

MainActivity结果截图:


打开的OtherActivity截图:


输入需要回传的内容:


返回结果截图:



下面是源代码:

MainActivity.Java

[html]  view plain  copy
 print ?
  1. package com.intent.activity;  
  2.   
  3. import android.app.Activity;  
  4. import android.content.Intent;  
  5. import android.os.Bundle;  
  6. import android.view.View;  
  7. import android.view.View.OnClickListener;  
  8. import android.widget.Button;  
  9. import android.widget.TextView;  
  10.   
  11. public class MainActivity extends Activity implements OnClickListener{  
  12.     private Button btn;  
  13.     private TextView backText;  
  14.     private static final int REQUESTCODE = 1;   //返回的结果码  
  15.     @Override  
  16.     public void onCreate(Bundle savedInstanceState) {  
  17.         super.onCreate(savedInstanceState);  
  18.         setContentView(R.layout.main);  
  19.         backText = (TextView)findViewById(R.id.backText);  
  20.         btn = (Button)findViewById(R.id.btOpenOtherActivity);  
  21.         btn.setOnClickListener(this);  
  22.     }  
  23.     @Override  
  24.     public void onClick(View v) {  
  25.         //定义一个意图  
  26.         Intent intent = new Intent(MainActivity.this,OtherActivity.class);  
  27.         //启动意图  
  28.         startActivityForResult(intent, REQUESTCODE);  
  29.     }  
  30.     //activity的回调函数  
  31.     @Override  
  32.     protected void onActivityResult(int requestCode, int resultCode, Intent data) {  
  33.         super.onActivityResult(requestCode, resultCode, data);  
  34.         if(resultCode==2){  
  35.             if(requestCode==REQUESTCODE){  
  36.                 String message = data.getStringExtra("message");  
  37.                 backText.setText("回传过来的值:"+message);  
  38.             }  
  39.         }  
  40.     }  
  41.       
  42. }  

OtherActivity.java

[html]  view plain  copy
 print ?
  1. package com.intent.activity;  
  2.   
  3. import android.app.Activity;  
  4. import android.content.Intent;  
  5. import android.os.Bundle;  
  6. import android.view.View;  
  7. import android.view.View.OnClickListener;  
  8. import android.widget.Button;  
  9. import android.widget.EditText;  
  10.   
  11. public class OtherActivity extends Activity implements OnClickListener{  
  12.     private EditText editText;  
  13.     private Button btn;  
  14.   
  15.     @Override  
  16.     public void onCreate(Bundle savedInstanceState) {  
  17.         super.onCreate(savedInstanceState);  
  18.         setContentView(R.layout.other);  
  19.         editText = (EditText) findViewById(R.id.editText);  
  20.         btn = (Button)findViewById(R.id.btnSendBack);  
  21.         btn.setOnClickListener(this);  
  22.         //获取Intent传递的Bundle对象和它里面的数据  
  23.         Bundle data = getIntent().getExtras();  
  24.   
  25.     }  
  26.     @Override  
  27.     public void onClick(View v) {  
  28.         Intent intent = new Intent();  
  29.         String text = editText.getText().toString();  
  30.         intent.putExtra("message", text);  
  31.         //通过Intent对象返回结果,setResult方法  
  32.         setResult(2,intent);  
  33.         finish();//结束当前Acitvity  
  34.     }  
  35. }  

main.xml

[html]  view plain  copy
 print ?
  1. <?xml version="1.0" encoding="utf-8"?>  
  2. <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"  
  3.     android:layout_width="fill_parent"  
  4.     android:layout_height="fill_parent"  
  5.     android:orientation="vertical" >  
  6.   
  7.     <TextView  
  8.         android:layout_width="fill_parent"  
  9.         android:layout_height="wrap_content"  
  10.         android:text="这是:MainActivity" />  
  11.       
  12.     <Button   
  13.         android:layout_width="wrap_content"  
  14.         android:layout_height="wrap_content"  
  15.         android:id="@+id/btOpenOtherActivity"  
  16.         android:text="使用意图打开OtherActivity并返回结果"/>  
  17.       
  18.     <TextView  
  19.         android:layout_width="fill_parent"  
  20.         android:layout_height="wrap_content"  
  21.         android:id="@+id/backText" />  
  22.   
  23. </LinearLayout>  

other.xml

[html]  view plain  copy
 print ?
  1. <?xml version="1.0" encoding="utf-8"?>  
  2. <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"  
  3.     android:layout_width="fill_parent"  
  4.     android:layout_height="fill_parent"  
  5.     android:orientation="vertical" >  
  6.       
  7.     <EditText   
  8.         android:layout_width="fill_parent"  
  9.         android:layout_height="wrap_content"  
  10.         android:hint="请输入回传的内容"  
  11.         android:id="@+id/editText"/>  
  12.     <Button   
  13.         android:layout_width="wrap_content"  
  14.         android:layout_height="wrap_content"  
  15.         android:text="返回结果"  
  16.         android:id="@+id/btnSendBack"/>      
  17.       
  18. </LinearLayout>  

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值