Intent(意图)主要是解决Android应用的各项组件之间的通讯
Intent又分为两种,一种是显示意图一种是隐式意图.
显示意图:
这个意图非常简单,传递两个参数即可,比如如下代码
//第一个参数为当前的activity,第二个参数则是要跳转的activity.
Intent it = new Intent ( MyActivity . this , OtherActivity . class );
startActivity(it);
隐视意图:
这是一个比较麻烦的意图,
首先需要intent来明确指出action和category,然后系统自动去匹配符合这两个参数的activity,然后启动该activity.
//这个参数就是action
Intent it = new Intent("android.test.MyActivity.ACTION_TEST");
//如果category是default的,那么此行代码则可以注释
it.addCategory("android.intent.category.TEST");
startActivity(it);
以上代码就是用来匹配action为android.tests.MyActivity.ACTION_TEST并且category是android.intent.category.TEST的activity,比如下面的activity,代码如下:(在AndroidManifest.xml修改)
<activity android:name="com.test.demo1.Demo2" android:theme="@style/AppBaseTheme" android:label="@string/app_name">
<intent-filter>
<action android:name="android.test.MyActivity.ACTION_TEST"/>
<category android:name="android.intent.category.TEST"/>
</intent-filter>
</activity>
隐式意图有很多用途,比如说你想打开一个网址,则可以调用浏览器的action:Intent.ACTION_VIEW,
运行后就可以打开指定网址了。
Intent it = new Intent(Intent.ACTION_VIEW);
it.setData(Uri.parse("http://www.php0.net"));
startActivity(it);
意图传递参数:
传递:
Intent it = new Intent(Demo1.this,Demo2.class);
it.putExtra("id", 12312312);
startActivity(it);
接收:
Intent it = getIntent();
int id = it.getIntExtra("id",0);
意图接收Back参数:
切换Activity:
Intent it = new Intent(Demo1.this,Demo2.class);
startActivityForResult(it,1); //第二个参数是个唯一值就行
传递给上级:
Intent it = new Intent(Demo2.this,Demo1.class);
it.putExtra("is_read", "已阅");
setResult(RESULT_OK,it);
finish();
接收返回的参数:
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
switch(requestCode){
case 1:
if(resultCode == RESULT_OK){
String is_read = data.getStringExtra("is_read");
Toast.makeText(getApplicationContext(), is_read, 1).show();
}
break;
default:
}
}
为了防止用户不点击back按钮进行返回,而是直接在键盘上按back键返回,这时候我们的程序就会出现问题,所以我们要重写 onBackPressed方法,当用户按下back键,则执行此方法.
@Override
public void onBackPressed() {
Intent it = new Intent();
it.putExtra("is_read", "已阅");
setResult(RESULT_OK,it);
finish();
}
OK,关于intent已经记入完毕.!