题目要求:实现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="接收前的默认值" />

android intent 传递数组参数 android studio intent传值_Android

在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="返回上一页" />

android intent 传递数组参数 android studio intent传值_android_02


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的值也被修改了

android intent 传递数组参数 android studio intent传值_android_03

这样我能就能实现2个页面之间的跳转,值也进行了传递,可是你有没有发现一个问题,如果用户并没有点击我们第二个页面的Button,而是点击了键盘上的返回键,那样我们

的值就得不到了,该怎么办呢?很简单,在第二个页面对应的那个Java类中,重写一个方法如下:

@Override
	public void onBackPressed() {
		it = new Intent();
		it.putExtra("key", "2222222222");
		setResult(RESULT_OK, it);
		// 关闭当前页面
		finish();
	}

此时再来看看点击返回键的效果吧

android intent 传递数组参数 android studio intent传值_xml文件_04

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