题目要求:实现2或多个页面之间的跳转,并把值传递过来(使用显示方式)
先来说一下在Android中Intent的使用方法分2中
1、显示方式
Intent intent = new Intent(Context packageContext, Class<?> cls);
intent.putExtra("键","值");
其中Context是一个上下文,第二个参数是要跳到的目标类
2、隐式方式
Intent intent = new Intent("String类型的字符串");
这里的String字符串是在AndroidManifest.xml文件中,第二个activity标签下action中的name的值。如果没有需要自己手动添加
这里举例是2个页面的
新建一个Android工程,修改默认的activity_main.xml文件,删除自带的TextView控件,修改如下
<Button
android:id="@+id/btn1"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:onClick="click"
android:text="跳转到页面2" />
<TextView
android:id="@+id/tvshow1"
android:layout_width="match_parent"
android:layout_height="50dp"
android:background="#c0c0c0"
android:text="接收前的默认值" />
在MainActivity.java中添加一个按钮的事件方法、重写onActivityResult方法
public void click(View view) {
Intent it = new Intent(this, SecondActivity.class);
// 参数1是一个Intent,参数2是一个唯一值就可以了
startActivityForResult(it, 1);
}
//此方法是得到返回的数据
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
// TODO Auto-generated method stub
super.onActivityResult(requestCode, resultCode, data);
switch (requestCode) {
case 1:
// 判断处理结果
if (resultCode == RESULT_OK) {
tvshow.setText(data.getStringExtra("key"));
}
break;
default:
break;
}
}
接着在MainActivity的包上面右键New-->Android Activity一路下一步,中间需要改一下名字,这种创建方法直接在AndroidManifest.xml文件里自动注册了,
不需要再手动注册,很方便。这里我起名叫SecondActivity.java。在res-->layout文件里面是不是多了一个activity_second.xml文件,里面的布局修改一下
删除默认的控件,添加如下代码
<Button
android:id="@+id/btn2"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:onClick="click"
android:text="返回上一页" />
SecondActivity.java代码如下
public void click(View view) {
it = new Intent();
it.putExtra("key", "1111111111");
/**
* setResult()方法用于专门向上一个活动返回数据的
* 参数1:处理结果RESULT_OK或者RESULT_CANCELED
* 参数2:带有参数的Intent
*/
setResult(RESULT_OK, it);
// 关闭当前页面
finish();
}
此时点击第二个页面的Button就可以跳转到第一个页面,别且第一个TextView的值也被修改了
这样我能就能实现2个页面之间的跳转,值也进行了传递,可是你有没有发现一个问题,如果用户并没有点击我们第二个页面的Button,而是点击了键盘上的返回键,那样我们
的值就得不到了,该怎么办呢?很简单,在第二个页面对应的那个Java类中,重写一个方法如下:
@Override
public void onBackPressed() {
it = new Intent();
it.putExtra("key", "2222222222");
setResult(RESULT_OK, it);
// 关闭当前页面
finish();
}
此时再来看看点击返回键的效果吧
是不是也实现了,这样既解决了页面之间跳转和值传递的问题,也解决了用户错误操作而不能实现值的传递的问题,当然这只是简单判断,正在的项目中可比这些复杂多了!