Android intent使用
活动页面跳转
1.显式引用
button1 = (Button)findViewById(R.id.button1);
button1.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent(MainActivity.this,SecondActivity.class);
startActivity(intent);
}
});
2.隐式引用
(1)在Mainfest.xml文件中在需要跳转的Activity后面添加
<intent-filter>
<action android:name="android.intent.action.second" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
(2) MainActivity中编写代码
Intent intent = new Intent("android.intent.action.second");
// intent.addCategory("");
startActivity(intent);
3.隐式intent的其他应用
//setData方法作用是接受URI对象
Intent intent = new Intent(Intent.ACTION_VIEW);
intent.setData(Uri.parse("http://www.baidu.com"));
startActivity(intent);
我们还可以在下面添加标签
这个标签下面可以添加
android:scheme 指定数据协议部分
android:host 指定数据主机名称
android:port 指定数据的端口部分
android:path指定主机名和端口后面的部分
android:mimeType 指定可以处理的数据类型
Intent intent = new Intent(Intent.ACTION_DIAL);//设置intent action类型
intent.setData(Uri.parse("tel:10086"));
活动页面相互传递数据
向下传递数据
1.发送数据页面
String Data = "haha";
Intent intent = new Intent(MainActivity.this,SecondActivity.class);
intent.putExtra("my_data",Data);
startActivity(intent);
2.接受数据页面
Intent intent = getIntent();
String Data = intent.getStringExtra("my_data");
Log.d("secondActivity",Data);
向上传递数据
1.在mainActivity页面添加intent,调用方法startActivityForResult(intent,1);
Intent intent = new Intent(MainActivity.this,SecondActivity.class);
startActivityForResult(intent,1);
2.在SecondActivity中添加携带数据intent调用方法setResult(RESULT_OK,intent)
Intent intent = new Intent();
intent.putExtra("return_data","hah");
setResult(RESULT_OK,intent );
finish();
3.finish()方法在销毁之前会回调上一个活动一次,在MainActivity方法中调用onActivityResult方法,在这个方法中将返回回来的数据解析出来
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
switch (requestCode){
case 1:
if (resultCode == RESULT_OK){
String return_Data = data.getStringExtra("return_data");
Log.d("shuju",return_Data);
}
break;
default:
}
}
4.返回结果
4.Tips
如果不使用secondActivity中的按钮触发返回数据功能
可以直接重写方法onBackPressed, 就能在按下返回键的时候直接将数据返回
代码如下:
@Override
public void onBackPressed() {
Intent intent = new Intent();
intent.putExtra("return_data","hah");
setResult(RESULT_OK,intent);
finish();
}
相当于替代了secondActivity中的button2的作用