• 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

    源码下载:源码
  • 相关阅读:
    Asp.Net服务器控件开发的Grid实现(四)回发事件
    Win8的IIS中架设php
    jsonp其实很简单【ajax跨域请求】
    Asp.Net服务器控件开发的Grid实现(三)列编辑器
    Asp.Net服务器控件开发的Grid实现(二)Html标记渲染
    构建之法阅读笔记01
    四则运算2
    psp0
    随机生成30道四则运算
    学习进度条
  • 原文地址:https://www.cnblogs.com/liangstudyhome/p/3708296.html
Copyright © 2020-2023  润新知