andriod的数据传递方法

在一个主界面(主Activity)上能连接往许多不同子功能模块(子Activity上去),当子模块的事情做完之后就回到主界面,或许还同时返回一些子模块完成的数据交给主Activity处理。这样的数据交流就要用到回调函数onActivityResult()。

public class MainActivity extends Activity {
    public final int REQUESTCODE_FROM_MAIN_TO_OTHER = 1;
    public final int REQUESTCODE_FROM_MAIN_TO_PEPELU = 2;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        Button btn_start_other = (Button) findViewById(R.id.btn_start_other);
        btn_start_other.setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View v) {
                Intent intent = new Intent();
                intent.setClass(MainActivity.this, OtherActivity.class);
                // 如果REQUESTCODE_MAIN> =0,当Activity结束时requestCode将归还在onActivityResult()中。               //以便确定返回的数据是从哪个Activity中返回
                startActivityForResult(intent, REQUESTCODE_FROM_MAIN_TO_OTHER);
            }
        });
        Button btn_start_pepelu = (Button) findViewById(R.id.btn_start_pepelu);
        btn_start_pepelu.setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View v) {
                Intent intent = new Intent();
                intent.setClass(MainActivity.this, PepeluActivity.class);
                startActivityForResult(intent, REQUESTCODE_FROM_MAIN_TO_PEPELU);
            }
        });

    }

    /**
     * requestCode和startActivityForResult中的requestCode相对应
     * resultCode和Intent是由子Activity通过其setResult()方法返回
     */
    @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        switch (requestCode) {
        case REQUESTCODE_FROM_MAIN_TO_OTHER:
            if (resultCode == Activity.RESULT_OK) {
                Toast.makeText(this, data.getStringExtra("name"), Toast.LENGTH_LONG).show();
                Log.i("onactivityresultdemo", data.getStringExtra("name"));
            } else {
                Log.i("onactivityresultdemo", "i blabalabal");
            }
            break;
        case REQUESTCODE_FROM_MAIN_TO_PEPELU:
            if (resultCode == Activity.RESULT_CANCELED) {
                Toast.makeText(this, data.getStringExtra("name"), Toast.LENGTH_LONG).show();
                Log.i("onactivityresultdemo", data.getStringExtra("name"));
            } else {
                Log.i("onactivityresultdemo", "i blabalabal");
            }
            break;
        default:
            break;
        }
    }
}

在OtherActivity中设置返回码和返回数据:

public class OtherActivity extends Activity {
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_other);

        Button btn = (Button) findViewById(R.id.btn_other);
        btn.setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View v) {
                Intent intent = new Intent();
                intent.putExtra("name", "cc");
                // 设置返回码和返回携带的数据
                setResult(Activity.RESULT_OK, intent);

            }
        });
    }

}

在PepeluActivity中设置返回码和返回数据:

public class PepeluActivity extends Activity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_pepelu);
        Button btn_pepelu=(Button) findViewById(R.id.btn_pepelu);
        btn_pepelu.setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View v) {
                Intent intent=new Intent();
                intent.putExtra("name", "pepelu");
                setResult(Activity.RESULT_CANCELED,intent);
            }
        });
    }
}

原文地址:https://www.cnblogs.com/blogwangwang/p/10496385.html

时间: 2024-08-11 11:53:01

andriod的数据传递方法的相关文章

解析activity之间数据传递方法的详解

转自:http://www.jb51.net/article/37227.htm 本篇文章是对activity之间数据传递的方法进行了详细的分析介绍,需要的朋友参考下 1  基于消息的通信机制 Intent--------boudle,extra用这种简单的形式,一般而言传递一些简单的类型是比较容易的,如int.string等详细介绍下Intent机制Intent包含两部分:1 目的[action]-------要去到哪里去2 内容[category.data]----------路上带些什么,

activity之间的数据传递方法

1  基于消息的通信机制 Intent--------boudle,extra 用这种简单的形式,一般而言传递一些简单的类型是比较容易的,如int.string等 详细介绍下Intent机制 Intent包含两部分: 1 目的[action]-------要去到哪里去 2 内容[category.data]----------路上带些什么,区分性数据和内容性数据 简单数据传递: Intent intent = new Intent(LoginActivity.this, MainActivity

Android数据传递方法

Android中,Activity之间的数据传递有些复杂,比如通过Intent和Bundle等等,传递复杂对象时必须是实现了Serializable接口的类,这在很多时候使得处理页面间的数据传递很不方便.在JavaWeb中,Session对象传递数据很实用方便,对此,在Android中可不可以自己实现一个类似JavaWeb中的Session呢? 其实很简单,在不严谨的情况下,具体实现过程如下: /*/////////////////////////////////////////////////

asp网络编程:Web程序中网页间数据传递方法小结

我们总是会遇到这样的情况,需要将数值从一个网页传递到另一个网页.在这篇文章中,向你展示了几种从一个网页向另一个网页传递数值的几种方法.在此例子中,创建的网页由一个文本控件和几个按钮控件组成.在文本框中输入的数据通过被标识在按钮控件中的不同方法从一个网页传递到另一个网页. Response.Redirect 让我们首先看一看如何使用Response.Redirect方法传递数据.这是它们之中最简单的方法.在文本框中输入一些数据,并且当你输入完成数据后,按下“Respose.Redirect”按钮.

两个页面之间的数据传递方法

1:通过URL传参(a页面<a href="b.html?n=zhangsan&p=123456">点击跳转到b页面</a>) b页面中的js代码:  function parseURL(url){    var url = url.split("?")[1];//分割字符串并取     console.log(url);    var para = url.split(/&|=/);    console.log(para)

Android 使用剪贴板传递简单数据及复杂数据的方法

传递数据的场景在于不同页面之间跳转,需要携带数据:简单数据值指的是String, int等数据, 复杂数据指的是类 1.   使用剪贴板传递简单数据方法: 第一个页面里面放数据操作如下: 1 ClipboardManager clipboardManager = (ClipboardManager); 2 getSystemService(Context.CLIPBOARD_SERVICE); 3 String text = "简单数据"; 4 clipboardManager.set

ASP.NET MVC3中Controller与View之间的数据传递总结

</pre>在ASP.NET MVC<span style="font-family:宋体">中,经常会在</span>Controller<span style="font-family:宋体">与</span>View<span style="font-family:宋体">之间传递数据,因此,熟练.灵活的掌握这两层之间的数据传递方法就非常重要.本文从两个方面进行探讨:&

Activity之间的数据传递

最常用的Activity之间的数据传递. 1 btnStartAty1.setOnClickListener(new View.OnClickListener() { 2 @Override 3 public void onClick(View v) { 4 Intent i=new Intent(MainActivity.this, Activity1.class); 5 //Activity之间的数据传递 6 //i.putExtra("txt", "这是第一种Activ

ASP.NET MVC中Controller与View之间的数据传递总结

在ASP.NET MVC中,经常会在Controller与View之间传递数据,因此,熟练.灵活的掌握这两层之间的数据传递方法就非常重要.本文从两个方面进行探讨: Ø Controller向View传递数据 Ø View向Controller传递数据 一.Controller向View传递数据 1.       使用ViewData传递数据 我们在Controller中定义如下: ViewData[“Message”] = “Hello word!”; 然后在View中读取Controller中