当前位置:   article > 正文

Intent ( 意图 )_intent意图分为哪俩种类型,区别是什么

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已经记入完毕.!
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/从前慢现在也慢/article/detail/236097
推荐阅读
相关标签
  

闽ICP备14008679号