记性不好的妹纸萌,只能靠学习记录整理了。

一个Intent对象,用于携带将跳转至下一个界面中使用的数据,使用putExtra(key,values)方法,此处存储的数据类型特别多,常用类型都支持。

方法一、

显式启动

Intent内部直接声明要启动的activity所对应的class。


Intent intent=new Intent(MainActivity.this, SecondActivity.class); startActivity(intent);

SecondActivity.start(MainActivity.this, url);

或者在SecondActivity.class里创建static方法

  1. public static void start(Context context, String url) {
    start(context, url,“no”);
    }
  2. public static void start(Context context, String url, String isMy) {
    Intent starter = new Intent(context, WebActivity.class);
    starter.putExtra("URL", url);
    starter.putExtra(ISMY, isMy);
  3. context.startActivity(starter);
    }

方法二、

隐式启动

进行三个匹配,一个是action, 一个是category,一个是data,全部或部分匹配,应用于广播原理BroadcastReceiver。


在AndroidManifest.xml文件里配置Activity的属性

action的名字要和Intent跳转内容一样

例如:

<activity

android:name="com.example.android.tst.SecondActivity" android:label="@string/title_activity_main" >

<intent-filter>

<action android:name="com.example.android.tst.SecondActivity"/>

<category android:name="android.intent.category.DEFAULT" />

</intent-filter>

</activity>

在需要用跳转的地方(使用与Adapter等不能直接显示跳转的地方)

  1. Intent intent=new Intent("com.example.android.tst.SecondActivity"); startActivity(intent);



方法三、

跳转后,当返回时能返回数据

在MainActivity.java里面


  1. Intent intent = new Intent(MainActivity.this, OtherActivity.class);
    intent.putExtra("a", a);
    intent.putExtra("b", b);
    // startActivity(intent);并不能返回结果
    startActivityForResult(intent, REQUESTCODE); //REQUESTCODE--->1
  2. // 获取结果
  3. @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    super.onActivityResult(requestCode, resultCode, data);
    // RESULT_OK,判断另外一个activity已经结束数据输入功能,Standard activity result:
    // operation succeeded. 默认值是-1
    if (resultCode == 2) {
    if (requestCode == REQUESTCODE) {
    int three = data.getIntExtra("c", 0);
    //设置结果显示框的显示数值
    result.setText(String.valueOf(three));
    }
    }
    }



在OtherActivity.java里面

此处并不是创建而是直接获取一个intent对象Return the intent that started this activity.

  1. Intent intent = getIntent();
    int a = intent.getIntExtra("a", 0); // 没有输入值默认为0
    int b = intent.getIntExtra("b", 0); // 没有输入值默认为0
    int c=a+b;
  2. 处理完获取数据后,在结束本Activity的时候回传数据
  3. Intent intent = new Intent();
  4. intent.putExtra("c", c); //将计算的值回传回去
    //通过intent对象返回结果,必须要调用一个setResult方法,
    //setResult(resultCode, data);第一个参数表示结果返回码,一般只要大于1就可以
    setResult(2, intent);
Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐