记性不好的妹纸萌,只能靠学习记录整理了。
一个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" >
<intent-filter>
<action android:name="com.example.android.tst.SecondActivity"/>
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
</activity>
在需要用跳转的地方(使用与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);