Android:通过startActivityForResult方法来得到Activity的回传值

在一些情况下,我们通过 A activity跳转到 B activity上,这时希望 A activtiy能从 B activity上得到一些返回值,这个时候我们就不能使用startActivity方法了,而是使用 startActivityForResult方法来完成我们的操作。

例如,我们希望完成下面一个功能,在MainActivity上,写上一个算术表达式,然后跳转到到第二个SecondActivity上,在这个Activity上将第一个Activity的表达式显示出来,然后我们可以输入我们的算术表达式结果,然后点击按钮,将这个结果值又返回给我们的MainActivity

  1. public class MyList extends Activity {  
  2.   
  3.     private EditText editView;  
  4.   
  5.     @Override  
  6.     public void onCreate(Bundle savedInstanceState) {  
  7.         super.onCreate(savedInstanceState);  
  8.         setContentView(R.layout.main);  
  9.   
  10.         editView = (EditText) findViewById(R.id.et);  
  11.   
  12.         Button bt = (Button) findViewById(R.id.bt);  
  13.         bt.setOnClickListener(new OnClickListener() {  
  14.             @Override  
  15.             public void onClick(View v) {  
  16.                 Intent intent = new Intent(MyList.this, TestWidget.class);  
  17.   
  18.                 Bundle bundle = new Bundle();  
  19.                 bundle.putString("text", editView.getText().toString());  
  20.                 intent.putExtras(bundle);  
  21.   
  22.                 startActivityForResult(intent, 0);  
  23.                 // finish(); //这句意思是关闭当前Activity,也就是说点返回键返回不到这个Activity了.  
  24.             }  
  25.         });  
  26.     }  
  27.   
  28.     /** 
  29.      * 取到回传的值 
  30.      */  
  31.     protected void onActivityResult(int requestCode, int resultCode, Intent data) {  
  32.         switch (resultCode) { // resultCode为回传的标记,我在B中回传的是RESULT_OK  
  33.         case RESULT_OK:  
  34.             Bundle b = data.getExtras(); // data为B中回传的Intent  
  35.             editView.setText(b.getString("text"));// 回传的值  
  36.             break;  
  37.         default:  
  38.             break;  
  39.         }  
  40.     }  
  41.   
  42. }  
 1 public class TestWidget extends Activity {  
 2   
 3     @Override  
 4     protected void onCreate(Bundle savedInstanceState) {  
 5         super.onCreate(savedInstanceState);  
 6         setContentView(R.layout.list_items);  
 7   
 8         Bundle bundle = getIntent().getExtras();  
 9   
10         final EditText editView = (EditText) findViewById(R.id.et1);  
11         editView.setText(bundle.getString("text"));  
12   
13         Button bt = (Button) findViewById(R.id.bt1);  
14         bt.setOnClickListener(new OnClickListener() {  
15             @Override  
16             public void onClick(View v) {  
17                 Intent intent = new Intent(TestWidget.this, MyList.class);  
18                   
19                 Bundle bundle = new Bundle();  
20                 bundle.putString("text", editView.getText().toString());  
21                 intent.putExtras(bundle);  
22                   
23                 setResult(RESULT_OK, intent);  
24                 finish(); // 这句意思是关闭当前Activity,也就是说点返回键返回不到这个Activity了.  
25             }  
26         });  
27     }  
28   
29 }  

 

posted on 2014-04-26 13:00  o℃銪點薍  阅读(412)  评论(0编辑  收藏  举报

导航