1、显示Intent:
Intent intent= new Intent(MainActivity.this,Main2Activity.class);
startActivity(intent);
Intent有很多构造函数,这是其中一个,第一参数是当前上下文,第二个是想要启动的活动.
2、隐式Intent
1、在action category指定
1、在Manifest的活动2中的intent-filter修改为:
<intent-filter>
<action android:name="AKB"/>
<category android:name="android.intent.category.DEFAULT"/>
</intent-filter>
2、Intent的构造函数:
Intent intent= new Intent("AKB");
startActivity(intent);
仅一个参数为action,因为我的category为默认(default)
3、假如category不为默认:
<action android:name="AKB"/>
<category android:name="android.intent.category.DEFAULT"/>
<category android:name="SKE"/>
<category android:name="HKT"/>
注意action只能有一个但是category可以很多
Intent intent= new Intent("AKB"); intent.addCategory("SKE"); intent.addCategory("HKT"); startActivity(intent);必须一一对应,在xml中有的,活动中也必须要有。
2、调用其他活动
Intent intent= new Intent(Intent.ACTION_VIEW); intent.setData(Uri.parse("https://www.baidu.com"));
Intent intent= new Intent(Intent.ACTION_VIEW); intent.setData(Uri.parse("tel:18202770142")); startActivity(intent);
3、指定data
intent-filter内还有一个标签为data,在这个标签里可以通过scheme\host\port\path\mimeType(数据类型)
比如当你在活动2的data中指定scheme为https,那么在活动1中使用
Intent intent= new Intent(Intent.ACTION_VIEW);
intent.setData(Uri.parse("https://www.baidu.com"));当我跳转时,APP会询问是否跳转到活动2
4、Intent向下传递数据
活动1:
String s1="NMSL";
intent.putExtra("TAG",s1);
活动2:
Intent intent=getIntent();
String s1=intent.getStringExtra("NMSL");
当然intent还有getIntExtra( )、getBooleanExtra( )方法
5、返回数据
活动1:
public void onClick(View v) {
Intent intent= new Intent(MainActivity.this,Main2Activity.class);
startActivityForResult(intent,1);
//1是请求码
}
使用的是startAcitivityForResult来传递 ,其中1是请求码
活动2:
Intent intent=new Intent();
intent.putExtra("SKE","AAAA");
setResult(RESULT_OK,intent);
// 还有RESULT_CANCELED 这两个是结果码
finish();
假如使用按Back键,也需要重写活动2的onBackPressed():
public void onBackPressed() {
Intent intent=new Intent();
intent.putExtra("SKE","AAAA");
setResult(RESULT_OK,intent);
finish();
}
在活动1:
重写:
onActivityResult()
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
switch (requestCode){
case 1:
if (resultCode==RESULT_OK)
Toast.makeText(MainActivity.this,""+data.getStringExtra("SKE"),Toast.LENGTH_LONG).show();
break;
default:
}
}