在Activity间传递数据的四种方法及返回结果

1.通用方法

使用intent的PutExtra方法传入,用getExtra等方法获得数据

主类

Intent intent=new Intent(MainActivity.this,OtherActivity.class);
                intent.putExtra("name", "张三");
                intent.putExtra("age", 23);
                intent.putExtra("address", "北京");
                startActivity(intent);

other类

        textView=(TextView) findViewById(R.id.msg);
        Intent intent=getIntent();
        int age=intent.getIntExtra("age", 0);
        String name=intent.getStringExtra("name");
        String address=intent.getStringExtra("address");        textView.setText("age--->>"+age+"name-->>"+name+"address-->>"+address);

2.利用静态变量传递

直接在主类中设置other类中的数据,进而实现主类到other类间的数据传递

主类

Intent intent=new Intent();
                intent.setClass(MainActivity.this,OtherActivity.class);
                OtherActivity.age=23;
                OtherActivity.name="jack";
                startActivity(intent);

other类

public class OtherActivity extends Activity{
    private TextView textView;
    public static String name;
    public static int age;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.other);
        textView=(TextView) findViewById(R.id.msg);
        textView.setText("-name-->>"+name+"-age-->>"+age);
    }
}

3.使用全局变量传递

创建myApp继承Application,通过设置Application中的数据,在Activity中传递

MyApp类

package com.example.intent4;

import android.app.Application;

public class MyApp extends Application{

    public String name;

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }
    @Override
    public void onCreate() {
        super.onCreate();
        setName("张三");
    }
}

主类

myApp=(MyApp) getApplication();
                myApp.setName("jack");//修改之后的名称
                Intent intent=new Intent(MainActivity.this,OtherActivity.class);
                startActivity(intent);

other类

textView=(TextView) findViewById(R.id.msg);
        myApp=(MyApp) getApplication();
        textView.setText("-appname-->>"+myApp.getName());

4.使用剪切板(不太会用)

5.返回结果

package com.example.intent5;

import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
//返回结果
public class MainActivity extends Activity {

    private EditText one,two,result;
    private Button button;
    private final static int REQUESTCODE=1;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        button=(Button) this.findViewById(R.id.calculate);
        one=(EditText) findViewById(R.id.one);
        two=(EditText) findViewById(R.id.two);
        result=(EditText) findViewById(R.id.result);
        button.setOnClickListener(new View.OnClickListener() {

            @Override
            public void onClick(View v) {
                int a=Integer.parseInt(one.getText().toString());
                int b=Integer.parseInt(two.getText().toString());
                Intent intent=new Intent(MainActivity.this,OtherActivity.class);
                intent.putExtra("a", a);
                intent.putExtra("b", b);
                startActivityForResult(intent,REQUESTCODE);//可以返回结果
            }
        });
    }
    @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        super.onActivityResult(requestCode, resultCode, data);
        //用于接受回传过来的值
        if(resultCode==2){
            if(requestCode==REQUESTCODE){
                int three=data.getIntExtra("three", 0);
                result.setText(String.valueOf(three));

            }
        }
    }

}
package com.example.intent5;

import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;

public class OtherActivity extends Activity {

    private Button button;
    private TextView textView;
    private EditText editText;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.other);
        button=(Button) this.findViewById(R.id.button1);
        textView=(TextView) this.findViewById(R.id.msg);
        editText=(EditText) findViewById(R.id.editText);
        Intent intent=getIntent();
        int a=intent.getIntExtra("a", 0);
        int b=intent.getIntExtra("b", 0);
        textView.setText(a+"+"+b+"="+"?");
        button.setOnClickListener(new View.OnClickListener() {

            @Override
            public void onClick(View v) {
                Intent intent=new Intent();
                int three=Integer.parseInt(editText.getText().toString());
                intent.putExtra("three", three);
                //通过Intent对象返回结果,setResult方法
                setResult(2, intent);
                finish();//结束当前Activity的生命周期
            }
        });
    }

}

注意:返回结果主类需要调用startForRexult方法及onActivityResult(),判断请求码及结果码是否正确,other类要写setResult(2, intent); finish();

时间: 2024-10-05 12:40:48

在Activity间传递数据的四种方法及返回结果的相关文章

Android 学习之路 1:Activity之间传递数据的四种方式

传递数据 新建 Activity 在项目中右键,选择 New,继续选择中下方的 Activity,最后是 Blank Activity. 此时 Android Studio 会为我们自动添加一个对应的布局文件,为布局文件中的 TextView 添加 ID,以便后续使用. 用Intent 发送数据 在主布局文件中新建一个 Button 控件,并在主类中定义它,然后为它设置 Click 的监听事件. Button button; @Override protected void onCreate(B

使用Bundle在Activity间传递数据

使用Bundle在Activity间传递数据 源Activity public class SourceActivty extends Activity { private Intent intent=null; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); intent=new In

EF5(7) 后台使用SelectListItem传值给前台显示Select下拉框;mvc后台Action接收浏览器传值的4种方式; 后台Action向前台View视图传递数据的四种方式

一:后台使用SelectListItem 传值给前台显示Select下拉框 我们先来看数据库的订单表,里面有3条订单,他们的用户id对应了 UserInfo用户表的数据,现在我们要做的是添加一个Order控制器,显示订单列表,并且在修改订单的时候,把用户的id 用 select 下拉框显示出来,并且可以提交修改数据   1.1 我们通过比较原始的方法,来把数据 传递到前台后,前台使用  循环来显示 select 并且显示是哪个元素被选中 我们在前台的cshtml中,使用 @model 命令 指定

5.MVC框架开发(强类型开发,控制器向界面传递数据的几种方法)

界面表单中的表单元素名字和数据库表的字段名相一一映射(需要哪个表的数据就是那个表的模型(Model)) 在View页面中可以指定页面从属于哪个模型 注:以上的关系可以通过MVC的强类型视图开发来解决我们的开发代码的智能感知 1.强类型视图开发的步骤 1)在页面中指定强类型的类型(一定是引用类型),代码:例: @model List<MyMVCBookShop.Models.Book> 2)从控制器传强类型的数据到View视图里,那么就必须保证传入的数据一定和强类型视图中定义的类型相一致,例:

JSP页面间传递参数的5种方法

JSP页面间传递参数是经常需要使用到的功能,有时还需要多个JSP页面间传递参数.下面介绍一下实现的方法. (1)直接在URL请求后添加 如:< a href="thexuan.jsp?action=transparams&detail=directe">直接传递参数< /a> 特别的在使用response.sendRedirect做页面转向的时候,也可以用如下代码: response.sendRedirect("thexuan.jsp?acti

在不同Activity传递数据(四种方式)

四种传递方法: 1.通过Intent传递数据: 2.通过静态变量传递数据: 3.通过剪切板传递数据: 4.通过全局对象传递数据: 分类介绍: 1.通过Intent传递数据: 代码如下: 布局: <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_

android中activity之间传递数据的3种方式

在android开发中总是需要不停的传递数据,特别是不同的Activity之间.在这里小编介绍自己所知的3种Activity的跳转方式. 第一种:静态传递数据 直接上部分代码:在第一个Activity中 Intent intent = new Intent(); intent.setClass(MainActivity.this,SecondActivity.class); SecondActivity.usrname = "jack"; SecondActivity.password

Android广播接收器和Activity间传递数据

Activity向广播接收器传递数据很简单,只需要在发送广播前将数据put进Intent中就行了. 广播接收器怎么向Activity传送数据?这里要用到接口,通过在广播接收器里定义一个接口,然后让接收广播接收器数据的Activity实现这个接口.先看下面的栗子,Activity发送一个广播,然后广播接收器返回一个字符串. Activity布局文件 1 <?xml version="1.0" encoding="utf-8"?> 2 <LinearL

http之post方法 提交数据的四种方法

http协议中,post方法用来向服务端提交数据, 这里介绍四种方式: application/x-www-form-urlencoded multipart/form-data application/json text/xml 由于是在http协议下工作,这里先看下http协议的样子. http协议的特点: 建议在TCP/IP之上的应用层,用ASCII码传输: http请求分为三部分,请求请求行,消息头,消息体,其中消息头和消息体用(CR/LF)空行隔开: <method> <req