android跳转到另一个Activity三种方法

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

一个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);
  • 23
    点赞
  • 95
    收藏
    觉得还不错? 一键收藏
  • 7
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值