Android-Activity之间的数据传递

本文详细介绍了Android中Activity之间的数据传递方法,包括简单的数据传递流程和示例代码,以及更复杂的涉及多种数据类型传递的案例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

今天是元宵节,祝大家元宵节快乐。

今天也是家父生日,希望家父身体健康,生日快乐。儿,不孝,不能陪家父在合家团圆的时刻过生日。

好了,进入正题,今天的主题是关于Activity之间的数据传递

Activity之间的数据传递的思路很简单,就是启动活动时传递数据

先来看一下逻辑图。

这里写图片描述

1.data
2.data用一系列的putExtra()方法重载
3.把putExtra()方法放到Intent当中去
4.使用Intent进行页面转换
5.使用getIntent()方法获取用于启动ActivityIntent
6.调用getStringExtra()方法,传入相应的键值,取得数据

接下来看一下代码

MainActivity.java


package wlhwh.example.com.myapplication;

import android.content.Intent;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;


public class MainActivity extends AppCompatActivity {

    private Button mButton;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        mButton = (Button)findViewById(R.id.button);
        mButton.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                //被传递的数据在OnClick()方法里面
                String data = "我是被传递的数据";
                //页面跳转
                Intent intent = new Intent(MainActivity.this,SecondActivity.class);
                //putExtra()方法重载,并放到intent当中
                //putExtra()方法有两个参数,前一个是键,后一个是数据
                intent.putExtra("data",data);
                startActivity(intent);
            }
        });
    }
}

SecondActivity.java


package wlhwh.example.com.myapplication;

import android.content.Intent;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.util.Log;

/**
 * Created by WLHWH on 2017/2/11.
 */

public class SecondActivity extends AppCompatActivity{

    @Override
    protected void onCreate(Bundle savedInstanceState){
        super.onCreate(savedInstanceState);
        setContentView(R.layout.second_activity);
        //getIntent()方法
        Intent intent = getIntent();
        //getStringExtra()方法获取intent中的数据
        //getStringExtra(0方法直接获取putExtra()方法中的键值
        String data = intent.getStringExtra("data");
        //打印出结果
        Log.d("SecondActivity",data);
    }
}

结果图

这里写图片描述

那么到这里基本的简单的数据传递就差不多了

进阶篇

在了解了原理之后,我们就来在实际的应用中来应用一下Activity之间的数据传递。

FirstActivity.java


package wlhwh.example.com.datatransport_20170209;

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 FirstActivity extends Activity {

    private EditText mEditText_1;
    private EditText mEditText_2;
    private EditText mEditText_3;
    private Button mButton_1;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.first_activity);
        mButton_1 = (Button)findViewById(R.id.button_1);
        mButton_1.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                //这里在OnClick()方法里面找到EditText实例的,我是第一次用到
                mEditText_1 = (EditText)findViewById(R.id.edittext_int);
                mEditText_2 = (EditText)findViewById(R.id.edittext_double);
                mEditText_3 = (EditText)findViewById(R.id.edittext_string);
                //取得输入的int型数据
                int et_int = Integer.parseInt(mEditText_1.getText().toString());
                //取得输入的double型数据
                double et_double = Double.parseDouble(mEditText_2.getText().toString());
                //取得输入的String型数据(即字符串类型,什么数据符号都可以)
                String et_String = mEditText_3.getText().toString();
                Intent intent = new Intent();
                intent.setClass(FirstActivity.this,SecondActivity.class);
                //这里new一个bundle对象,并将要传递的数据传入
                Bundle bundle = new Bundle();
                //这里bundle获得输入对象的数据
                bundle.putInt("et_int",et_int);
                bundle.putDouble("et_double",et_double);
                bundle.putString("et_String",et_String);
                //把bundle的对象给intent
                intent.putExtras(bundle);
                startActivityForResult(intent,1);
            }
        });
    }
}

SecondActivity.java


package wlhwh.example.com.datatransport_20170209;

import android.content.Intent;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.widget.Button;
import android.widget.TextView;

/**
 * Created by WLHWH on 2017/2/9.
 */

public class SecondActivity extends AppCompatActivity{

    private TextView mTextView_1;
    private TextView mTextView_2;
    private TextView mTextView_3;
    private Button mButton_2;

    Bundle bundle;
    Intent intent;
    @Override
    protected void onCreate(Bundle savedInstanceState){
        super.onCreate(savedInstanceState);
        setContentView(R.layout.second_activity);
        //取得intent中的bundle对象
        intent = this.getIntent();
        //取得bundle中的数据
        bundle = intent.getExtras();

        //分别获取不同的数据
        int et_int = bundle.getInt("et_int");
        double et_double = bundle.getDouble("et_double");
        String et_String = bundle.getString("et_String");

        mTextView_1 = (TextView)findViewById(R.id.textview_int);
        mTextView_2 = (TextView)findViewById(R.id.textview_double);
        mTextView_3 = (TextView)findViewById(R.id.textview_String);

        //显示不同的数据
        mTextView_1.setText("我是取得的int型数据:"+et_int);
        mTextView_2.setText("我是取得的double型数据:"+et_double);
        mTextView_3.setText("我是取得的String型数据:"+et_String);

    }
}

结果图

这里写图片描述

这里写图片描述

那么这里我们基本就把Activity之间的数据传递搞定了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值