Android中Intent的显示和隐式使用
2014-10-18 16:28
351 查看
Android应用程序中组件之间的通信都少不了Intent的使用,Intent负责对应用中一次操作的动作、动作涉及数据、附加数据进行描述,Android则根据此Intent的描述,负责找到对应的组件,将 Intent传递给调用的组件,并完成组件的调用。intent就是意图的意思。Intent分两种:显式(Explicit intent)和隐式(Implicit intent)。
Mainactivity的布局文件
Mainactivity中调用点击事件:
这个时候的Intent就是显示调用,直接指定了接收参数的Activity,可以唯一确定一个Activity,意图特别明确,这个时候需要在PersonActivity接收参数:
另外这个时候传递的参数使用的方法是putExtra,如果传递的参数比较多可以使用Bundle类似于map。
这个时候需要在AndroidManifest.xml中设置一下intent-filter中去设置一下,如下,Category直接使用默认的就行:
Mainactivity中的调用使用,这个时候的调用:
这个自己定义的Action字符串可以调用自身程序的Activity,还可以其他应用程序的Action,比如说常用的拨号面板:
如果这个时候在AndroidManifest.xml文件中给PersonActivity, 加一个Action,如下:
Mainactivity中的调用:
结果如图所示:
![](http://images.cnitblog.com/blog/485855/201410/181611519045821.png)
Intent.ACTION_DIAL是系统常量字符串,等价于android.intent.action.DIAL,调用的时候通过这个action的名称,去寻找具有这个action的activity~
显示调用Intent
简单的Demo从一个Activity转到另外一个Aactivity:Mainactivity的布局文件
<EditText android:id="@+id/edt_content" android:layout_width="match_parent" android:layout_height="wrap_content" /> <Button android:id="@+id/btn_login" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_below="@id/edt_content" android:onClick="login" android:text="查询" />
Mainactivity中调用点击事件:
EditText contentEditText=(EditText) findViewById(R.id.edt_content); Intent intent=new Intent(this,PersonActivity.class); intent.putExtra(EXTRA,contentEditText.getText().toString()); startActivity(intent);
这个时候的Intent就是显示调用,直接指定了接收参数的Activity,可以唯一确定一个Activity,意图特别明确,这个时候需要在PersonActivity接收参数:
public class PersonActivity extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_person); TextView textView=(TextView) findViewById(R.id.txt_content); Intent intent=getIntent(); String str=intent.getStringExtra(MainActivity.EXTRA); textView.setText(str); textView.setTextSize(20); textView.setTextColor(Color.RED); }
另外这个时候传递的参数使用的方法是putExtra,如果传递的参数比较多可以使用Bundle类似于map。
隐式调用
隐式,即不是像显式的那样直接指定需要调用的Activity,隐式不明确指定启动哪个Activity,而是设置Action、Data、Category,让系统来筛选出合适的Activity。筛选是根据所有的<intent-filter>来筛选。这个时候需要在AndroidManifest.xml中设置一下intent-filter中去设置一下,如下,Category直接使用默认的就行:
<intent-filter> <action android:name="com.example.googleone.Peson" /> <category android:name="android.intent.category.DEFAULT" /> </intent-filter>
Mainactivity中的调用使用,这个时候的调用:
Intent intent=new Intent("com.example.googleone.Peson"); startActivity(intent);
这个自己定义的Action字符串可以调用自身程序的Activity,还可以其他应用程序的Action,比如说常用的拨号面板:
Intent intent = new Intent(Intent.ACTION_DIAL); startActivity(intent);
如果这个时候在AndroidManifest.xml文件中给PersonActivity, 加一个Action,如下:
<activity android:name=".PersonActivity" android:label="@string/title_activity_person" > <intent-filter> <action android:name="android.intent.action.DIAL"/> <action android:name="com.example.googleone.Peson" /> <category android:name="android.intent.category.DEFAULT" /> </intent-filter> </activity>
Mainactivity中的调用:
Intent intent=new Intent(Intent.ACTION_DIAL); if(intent.resolveActivity(getPackageManager()) == null) { view.setEnabled(false); } try { startActivity(intent); } catch (ActivityNotFoundException e) { // TODO Auto-generated catch block Toast.makeText(this,"找不到对应的Activity",Toast.LENGTH_SHORT).show(); }
结果如图所示:
![](http://images.cnitblog.com/blog/485855/201410/181611519045821.png)
Intent.ACTION_DIAL是系统常量字符串,等价于android.intent.action.DIAL,调用的时候通过这个action的名称,去寻找具有这个action的activity~
相关文章推荐
- Android的intent:基础概念以及显示/隐式使用Intent && 通过intent返回结果
- Android 使用ContentProvider 实现多个activity灵活显示,实现Intent隐式传值.
- Android中显示和隐式Intent的使用
- Android -- 两个activity界面的切换, 显示Intent 和 隐式Intent,putExtra传递数据
- android Intent (隐式意图和显示意图)
- Android Intent详细介绍及使用说明(显式、隐式和值传递)
- Android开发学习之浅谈显示Intent和隐式Intent
- Android深入探究笔记 -- Intent (隐式意图和显示意图)
- Android开发学习笔记:浅谈显示Intent和隐式Intent
- Android开发学习笔记:浅谈显示Intent和隐式Intent
- Android使用Intent Filter来响应隐式Intent
- 关于Android intent的知识 隐式意图和显示意图
- 【转】Android深入探究笔记之三 -- Intent (隐式意图和显示意图)
- Android开发学习笔记:浅谈显示Intent和隐式Intent
- Android -- 显示Intent与隐式Intent的应用
- android学习记录(五)显式Intent与隐式Intent的功能与使用方法解析。
- android intent 隐式意图和显示意图(activity跳转)
- Android:Intent 显示和隐式 学习
- Android学习记录(7)—Intent中显示意图和隐式意图的用法
- Android学习记录--Intent中显示意图和隐式意图的用法