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

activity之间单传递也就是activityA传递到activityB携带数据传递有两种
android数据传递(一)之activityA传递到activityB_第1张图片方式:
1.activityA通过intent.putExtra(key,value);
可以传递很多类型,看下图android数据传递(一)之activityA传递到activityB_第2张图片
在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的用法的博客)
运行项目,显示如下
android数据传递(一)之activityA传递到activityB_第3张图片
以上是第一种传递数据的的方法
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.csdn.net/detail/dl10210950/9590588

你可能感兴趣的:(android,activity,数据传递)