Intent ( 意图 )

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已经记入完毕.!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值