Android开发,关于Intent跳转和传递值

题目要求:实现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();
	}
此时再来看看点击返回键的效果吧

是不是也实现了,这样既解决了页面之间跳转和值传递的问题,也解决了用户错误操作而不能实现值的传递的问题,当然这只是简单判断,正在的项目中可比这些复杂多了!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值