跳转另一个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方法

public static void start(Context context, String url) {
start(context, url,“no”);
}
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);
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" >

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

Intent intent=new Intent(“com.example.android.tst.SecondActivity”); startActivity(intent);

方法三、

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

在MainActivity.java里面

Intent intent = new Intent(MainActivity.this, OtherActivity.class);
intent.putExtra(“a”, a);
intent.putExtra(“b”, b);
// startActivity(intent);并不能返回结果
startActivityForResult(intent, REQUESTCODE); //REQUESTCODE—>1
// 获取结果
@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.

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值