Android 中页面跳转与传值

上次我们讲了如何实现页面跳转,今天我们来实现页面跳转与传值:

在Android应用程序中很少会只有一个Activity对象,如何在多个Activity之间进行跳转,而且能够互相传值是一个很基本的要求。

本次我们就来讲一下,Android中页面跳转时实现传值的几种方式:

比较简单的页面跳转由A页面跳转到B页面:

Intent intent=new Intent(A.this,B.class);

   startActivity(intent);


1.用Intent传递普通值到一个页面的方法:
public void testOne(View view){
Intent intent=new Intent(A.this,B.class);
//窗体传值
intent.putExtra("stuName", "张三");
intent.putExtra("stuAge", 20);
intent.putExtra("isMerry", false);

intent.putExtra("stuHobby", new String[]{"篮球","羽毛球","足球"});

ArrayList<String> list=new ArrayList<String>();
list.add("北京");
list.add("上海");
list.add("珠海");
intent.putStringArrayListExtra("stuCitys", list);
startActivity(intent);
}

在另一个页面接收值:

protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_second__one);

//从Intent中取出传递过来的数据
Intent intent=getIntent();
//取出普通数据
String name=intent.getStringExtra("stuName");
int age=intent.getIntExtra("stuAge", 0);
boolean isMerry=intent.getBooleanExtra("isMerry", false);

//取出数组数据
String[] hobbys=intent.getStringArrayExtra("stuHobby");
String hobby=Arrays.toString(hobbys);

//取出ArrayList集合数据
ArrayList<String> citys=intent.getStringArrayListExtra("stuCitys");
String city=Arrays.toString(citys.toArray());

showText=(TextView)findViewById(R.id.showText);

String str="姓名:"+name+",年龄:"+age+"\n" +
  "婚否:"+isMerry+"\n" +
    "爱好:"+hobby+"\n" +
    "城市:"+city;
showText.setText(str);
}

2.使用Bundle传递数据

public void testTwo(View view){
Intent intent=new Intent(A.this,B.class);
//构建Bundle对象
Bundle bundle=new Bundle();
bundle.putString("stuName", "贪睡者");
bundle.putInt("stuAge", 23);

bundle.putStringArray("stuHobby", new String[]{"篮球","足球"});

ArrayList<String> list=new ArrayList<String>();
list.add("北京");
list.add("上海");
list.add("珠海");
bundle.putStringArrayList("stuCity", list);

//将封装数据的Bundle作为参数发送过去
intent.putExtra("myData", bundle);
startActivity(intent);
}

在A页面上是以Bundle封装了对象,自然在B页面也是以Bundle的方式来解开封装的数据。主要通过"getIntent().getExtras()"方法来获取Bundle,然后再从Bundle中获取数据。 也可以通过" this.getIntent().getStringExtra("Name");"方法直接从Intent中获取数据。

从Bundle获取数据的代码:

protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_second__two);

//取出Bundle对象
Intent intent=getIntent();
Bundle bundle=intent.getBundleExtra("myData");

//取出普通数据
String name=bundle.getString("stuName");
int age=bundle.getInt("stuAge");

//取出复杂数据
String[] hobbys=bundle.getStringArray("stuHobby");
ArrayList list=bundle.getStringArrayList("stuCity");
String hobby=Arrays.toString(hobbys);//[xx,xxx,xxx]
if(hobby!=null&&hobby.length()>0)
hobby=hobby.substring(1,hobby.length()-1);
String city=Arrays.toString(list.toArray());
if(city!=null&&city.length()>0)
city=city.substring(1,city.length()-1);

showText=(TextView)findViewById(R.id.showText);

String str="姓名:"+name+",年龄:"+age+"\n" +
    "爱好:"+hobby+"\n" +
    "城市:"+city;
showText.setText(str);


}


  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值