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.csdn.net/detail/dl10210950/9590588