zoukankan      html  css  js  c++  java
  • android Intent的startActivityForResult()方法

    startActivityForResult()

      之前学习了利用Intent跳转页面的同时传值,但有的时候需要从跳转到的页面返回所需要的值(如修改了用户信息,需要返回修改的信息),通俗的意思就是A.Activity跳转到B.Activity,在A.Activity中要自动获取到B.Activity返回的数据。

      1.介绍几个主要的方法:

    1 MainActivity.this.startActivityForResult(intent1, 1);

    第一个参数intent1就不介绍了,第二个参数的值必须要大于等于0,你可以自己设定数值,该值是用来标记你要跳转并返回值的Activity。比如这里我设定的是以就是说明A.Activity跳转到B.Activity的标记为1,若A.Activity跳转到C.Activity

    那就不能再设定为1了,可以写除了1意外的所有正整数。

      2.onActivityResult(int requestCode, int resultCode, Intent data)     这个方法是返回主activity自动执行的

     1 protected void onActivityResult(int requestCode, int resultCode, Intent data) {
     2         super.onActivityResult(requestCode, resultCode, data);
     3         switch (requestCode) {
     4         case 1:
     5             Toast.makeText(MainActivity.this,
     6                     "这是从第一个activity返回的数据---->>" + data.getStringExtra("text"),
     7                     Toast.LENGTH_LONG).show();
     8 
     9             break;
    10         case 2:
    11             Toast.makeText(MainActivity.this,
    12                     "这是从第二个activity返回的数据---->>" + data.getStringExtra("text"),
    13                     Toast.LENGTH_LONG).show();
    14 
    15             break;
    16 
    17         }
    18 
    19     }

    这个方法就是用来处理从哪张Activity返回的,并处理返回来数据。

    requestCode:就是之前在主界面的.startActivityForResult的第二个参数值,通过判断requestCode就可以知道是哪张页面返回回来的
    resultCode: 根据它来判断返回页面所需要的不同操作
    Intent : 就是从子页面返回回来的Intent
    3.setResult(resultCode, data)
    1 setResult(1, intent1)

     这里的1就对应到onActivityResult()方法中的resultCode

     intent1 对应onActivityResult()方法中的data, 也就是要返回主Activity所需要处理的Intent

    4.主要的方法介绍完以后就介绍下源代码:
    MainActivity:
     1 public class MainActivity extends Activity implements OnClickListener {
     2 
     3     private Button btn1;
     4     private Button btn2;
     5 
     6     @Override
     7     protected void onCreate(Bundle savedInstanceState) {
     8         super.onCreate(savedInstanceState);
     9         setContentView(R.layout.activity_main);
    10         btn1 = (Button) findViewById(R.id.btn1);
    11         btn1.setOnClickListener(this);
    12         btn2 = (Button) findViewById(R.id.btn2);
    13         btn2.setOnClickListener(this);
    14     }
    15 
    16     @Override
    17     public boolean onCreateOptionsMenu(Menu menu) {
    18         getMenuInflater().inflate(R.menu.main, menu);
    19         return true;
    20     }
    21 
    22     @Override
    23     public void onClick(View v) {
    24         switch (v.getId()) {
    25         case R.id.btn1:
    26             Intent intent1 = new Intent();
    27             intent1.setClass(MainActivity.this, OneActivity.class);
    28             MainActivity.this.startActivityForResult(intent1, 1);
    29             break;
    30         case R.id.btn2:
    31             Intent intent2 = new Intent();
    32             intent2.setClass(MainActivity.this, TwoActivity.class);
    33             MainActivity.this.startActivityForResult(intent2, 2);
    34 
    35             break;
    36 
    37         }
    38 
    39     }
    40 
    41     @Override
    42     protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    43         super.onActivityResult(requestCode, resultCode, data);
    44         switch (requestCode) {
    45         case 1:
    46             Toast.makeText(MainActivity.this,
    47                     "这是从第一个activity返回的数据---->>" + data.getStringExtra("text"),
    48                     Toast.LENGTH_LONG).show();
    49 
    50             break;
    51         case 2:
    52             Toast.makeText(MainActivity.this,
    53                     "这是从第二个activity返回的数据---->>" + data.getStringExtra("text"),
    54                     Toast.LENGTH_LONG).show();
    55 
    56             break;
    57 
    58         }
    59 
    60     }
    61 
    62 }
    MainActivity.java
    
    

      OneActivity:

     1 public class OneActivity extends Activity {
     2 
     3     private EditText edit;
     4     private Button submit;
     5 
     6     @Override
     7     protected void onCreate(Bundle savedInstanceState) {
     8         super.onCreate(savedInstanceState);
     9         setContentView(R.layout.activity_one);
    10         edit = (EditText) findViewById(R.id.editOne);
    11         submit = (Button) findViewById(R.id.btnSubmitOne);
    12         submit.setOnClickListener(new Button.OnClickListener() {
    13 
    14             @Override
    15             public void onClick(View v) {
    16 
    17                 Intent intent1 = new Intent();
    18                 intent1.putExtra("text", edit.getText().toString().trim());
    19                 OneActivity.this.setResult(1, intent1);
    20                 
    21                 OneActivity.this.finish();
    22             }
    23         });
    24 
    25     }
    26 
    27     @Override
    28     public boolean onCreateOptionsMenu(Menu menu) {
    29         getMenuInflater().inflate(R.menu.one, menu);
    30         return true;
    31     }
    32 
    33 }
    OneActivity.java

      TwoActivity:

     1 private EditText edit;
     2     private Button submit;
     3 
     4     @Override
     5     protected void onCreate(Bundle savedInstanceState) {
     6         super.onCreate(savedInstanceState);
     7         setContentView(R.layout.activity_two);
     8         edit = (EditText) findViewById(R.id.editTwo);
     9         submit = (Button) findViewById(R.id.btnSubmitTwo);
    10         submit.setOnClickListener(new Button.OnClickListener() {
    11 
    12             @Override
    13             public void onClick(View v) {
    14                 Intent intent1 = new Intent();
    15                 intent1.putExtra("text", edit.getText().toString().trim());
    16                 TwoActivity.this.setResult(2, intent1);
    17                 TwoActivity.this.finish();
    18             }
    19         });
    20 
    21     }
    22 
    23     @Override
    24     public boolean onCreateOptionsMenu(Menu menu) {
    25         // Inflate the menu; this adds items to the action bar if it is present.
    26         getMenuInflater().inflate(R.menu.two, menu);
    27         return true;
    28     }
    29 
    30 }
    TwoActivity.java

      对应的XML文件就不贴出来了,子页面就一个EditText 和 Button

    源码下载:源码
  • 相关阅读:
    poj 3280 Cheapest Palindrome(区间DP)
    POJ 2392 Space Elevator(多重背包)
    HDU 1285 定比赛名次(拓扑排序)
    HDU 2680 Choose the best route(最短路)
    hdu 2899 Strange fuction (三分)
    HDU 4540 威威猫系列故事――打地鼠(DP)
    HDU 3485 Count 101(递推)
    POJ 1315 Don't Get Rooked(dfs)
    脱离eclipse,手动写一个servlet
    解析xml,几种方式
  • 原文地址:https://www.cnblogs.com/liangstudyhome/p/3708296.html
Copyright © 2011-2022 走看看