android数据传递(一)之activityA传递到activityB

本文介绍了Android中Activity之间两种常用的数据传递方式:使用Intent的putExtra方法和利用Bundle进行数据封装。通过具体示例展示了如何在ActivityA中设置数据并在ActivityB中获取这些数据。

activity之间单传递也就是activityA传递到activityB携带数据传递有两种
这里写图片描述方式:
1.activityA通过intent.putExtra(key,value);
可以传递很多类型,看下图这里写图片描述
在activityB根据你传递数据的类型通过getExtra()接收
例如 String类型的:getIntent().getStringExtra(“name”);
int类型的: getIntent().getIntExtra(“age”, 0);
下面看一个小demo
首先在eclipse里面创建一个android工程,创建两个activity
一个名为ActivityA一个名为ActivityB(记住一定都要在AndroidManifest.xml里面注册这两个activity)
ActivityA的布局文件里面写一个Button用于跳转到ActivityB

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    >
    <Button
        android:onClick="button"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_centerInParent="true"
        android:text="点击跳转" />

</RelativeLayout>

然后在activity里面写点击后跳转的逻辑

public void button(View view){
        Intent intent = new Intent(this,ActivityB.class);
        intent.putExtra("name", "周杰伦");
        intent.putExtra("age", 38);
        startActivity(intent);

    }

ActivityB布局文件里就写了一个TextView用来区分两个activity

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="#ff00ff"
     >

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_centerInParent="true"
        android:textSize="50sp"
        android:text="ActivityB" />

</RelativeLayout>

ActivityB里面接收数据的逻辑代码为

public class ActivityB extends Activity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_b);
        String name = getIntent().getStringExtra("name");
        int age = getIntent().getIntExtra("age", 0);
        Toast.makeText(this, "名字是:"+name+";年龄是:"+age, Toast.LENGTH_LONG).show();
    }

写了一个Toast用以显示接收到的数据,看是否已经接收到(本人也写了一篇关于toast的用法的博客)
运行项目,显示如下
这里写图片描述
以上是第一种传递数据的的方法
2.第二种是利用bundle来传值,把数据放在bundle里面,bundle相当于Map一样
ActivityA里面代码如下

public class ActivityA extends Activity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_a);


    }
    public void button(View view){
        Intent intent = new Intent(this,ActivityB.class);
//      intent.putExtra("name", "周杰伦");
//      intent.putExtra("age", 38);
        //用bundle传值
         Bundle bundle=new Bundle(); 
         bundle.putString("name", "周杰伦"); 
         bundle.putInt("age", 38); 
         intent.putExtras(bundle);
        startActivity(intent);

    }
}

ActivityB里面接收和第一种接收是一样的

public class ActivityB extends Activity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_b);
        //新页面接收数据
        Bundle bundle = this.getIntent().getExtras();
        //接收name值
        Bundle bundle = getIntent().getExtras();
        String name = bundle.getString("name");
        int age = bundle.getInt("age");  

        Toast.makeText(this, "名字是:"+name+";年龄是:"+age, Toast.LENGTH_LONG).show();
    }
}

运行结果和第一种运行的结果是一样的
demo下载地址http://download.youkuaiyun.com/detail/dl10210950/9590588

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值