显示Intent和隐式Intent

原创 2015年07月07日 11:34:31
  • 显式Intent:通过指定Intent组件名称来实现的,它一般用在知道目标组件名称的前提下,一般是在相同的应用程序内部实现的。
  • 隐式Intent:通过Intent Filter来实现的,它一般用在没有明确指出目标组件名称的前提下,一般是用于在不同应用程序之间,必须加上<</span>category android:name = "android.intent.category.DEFAULT" />

一.显式Intent

   一 般情况下,一个Android应用程序中需要多个屏幕,即是多个Activity类,并且在这些Activity之间进行切换通过Intent机制来实现 的。在同一个应用程序中切换Activity时,我们通常都知道要启动的Activity具体是哪一个,因此常用显式的Intent来实现的。

    下 面的例子是在同一应用程序中MainActivity启动SecondActivity,下面的代码中,主要是为“转到SecondActivity”按 钮添加了OnClickListener,使得按钮被点击时执行onClick()方法,onClick()方法中则利用了Intent机制,来启动 SecondActivity,关键的代码是22~25行。

main.xml

  1. <?xml version="1.0" encoding="utf-8"?>
  2. <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
  3. android:orientation="vertical"
  4. android:layout_width="fill_parent"
  5. android:layout_height="fill_parent"
  6. >
  7. <TextView
  8. android:layout_width="fill_parent"
  9. android:layout_height="wrap_content"
  10. android:text="@string/hello1"
  11. />
  12. <Button
  13. android:id="@+id/btn"
  14. android:layout_width="wrap_content"
  15. android:layout_height="wrap_content"
  16. android:text="转到SecondActivity"
  17. />
  18. </LinearLayout>

second.xml

  1. <?xml version="1.0" encoding="utf-8"?>
  2. <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
  3. android:orientation="vertical"
  4. android:layout_width="fill_parent"
  5. android:layout_height="fill_parent"
  6. >
  7. <TextView
  8. android:layout_width="fill_parent"
  9. android:layout_height="wrap_content"
  10. android:text="@string/hello2"
  11. />
  12. <Button
  13. android:id="@+id/secondBtn"
  14. android:layout_width="wrap_content"
  15. android:layout_height="wrap_content"
  16. android:text="返回"
  17. />
  18. </LinearLayout>

MainActivity.java

  1. package com.android.test.activity;

  2. import android.app.Activity;
  3. import android.content.Intent;
  4. import android.os.Bundle;
  5. import android.view.View;
  6. import android.view.View.OnClickListener;
  7. import android.widget.Button;

  8. public class MainActivity extends Activity {
  9. private Button btn;
  10. @Override
  11. public void onCreate(Bundle savedInstanceState) {
  12. super.onCreate(savedInstanceState);
  13. setContentView(R.layout.main);

  14. btn = (Button)findViewById(R.id.btn);
  15. //响应按钮btn事件
  16. btn.setOnClickListener(new OnClickListener() {
  17. @Override
  18. public void onClick(View v) {
  19. //显示方式声明Intent,直接启动SecondActivity
  20. Intent it = new Intent(MainActivity.this,SecondActivity.class);
  21. //启动Activity
  22. startActivity(it);
  23. }
  24. });
  25. }
  26. }

SecondActivity.java

  1. package com.android.test.activity;

  2. import android.app.Activity;
  3. import android.content.Intent;
  4. import android.os.Bundle;
  5. import android.view.View;
  6. import android.view.View.OnClickListener;
  7. import android.widget.Button;

  8. public class SecondActivity extends Activity {
  9. private Button secondBtn;
  10. @Override
  11. protected void onCreate(Bundle savedInstanceState) {
  12. super.onCreate(savedInstanceState);
  13. setContentView(R.layout.second);

  14. secondBtn=(Button)findViewById(R.id.secondBtn);
  15. //响应按钮secondBtn事件
  16. secondBtn.setOnClickListener(new OnClickListener() {
  17. @Override
  18. public void onClick(View v) {
  19. //隐式方式声明Intent,直接启动MainActivity
  20. Intent intent = new Intent(SecondActivity.this,“com.st.org.main”);
  21. //启动Activity
  22. startActivity(intent);
  23. }
  24. });
  25. }
  26. }

AndroidManifest.xml清单文件,16~18行为SecondActivity在清单文件里的声明

  1. <?xml version="1.0" encoding="utf-8"?>
  2. <manifest xmlns:android="http://schemas.android.com/apk/res/android"
  3. package="com.android.test.activity"
  4. android:versionCode="1"
  5. android:versionName="1.0">
  6. <uses-sdk android:minSdkVersion="10" />

  7. <application android:icon="@drawable/icon" android:label="@string/app_name">
  8. <activity android:name=".MainActivity"
  9. android:label="@string/app_name">
  10. <intent-filter>
  11. <action android:name="com.st.org.main" />
  12. <category android:name="android.intent.category.LAUNCHER" />
  13. </intent-filter>
  14. </activity>
  15. <activity android:name=".SecondActivity"
  16. android:label="@string/app_name">
  17. </activity>
  18. </application>
  19. </manifest>
版权声明:本文为博主原创文章,未经博主允许不得转载。

Intent显示和隐式的区别

显式Intent:通过指定Intent组件名称来实现的,它一般用在知道目标组件名称的前提下,去调用Intent.setComponent()、Intent.setClassName()或Intent....
  • Beixiaozhang
  • Beixiaozhang
  • 2016年10月29日 16:34
  • 1088

Activity之Intent隐式启动PK显示启动

一、标题中所说启动其实是跳转到下一个Activity方式。严格意义上的启动指的是startActivity(intent),或者带值返回startActivityForResult(intent)。 ...
  • iblade
  • iblade
  • 2016年01月16日 11:22
  • 1555

Android理解:显式和隐式Intent

Intent是Android初学者比较难理解的一个东西。我这里以通俗易懂的语言和通俗易懂的代码,让初学者简单感受一下Intent。 intent就是意图的意思。Intent分两种:显式(Explici...
  • xiao__gui
  • xiao__gui
  • 2013年09月08日 19:33
  • 25953

关于显示Intent和隐式Intent

之前看了大神们写的博客,觉得自己也该有个好的记录习惯,从今天开始学习写博客,记录一下成长过程中的点点滴滴。 接手之前同事做的Android开发项目,想把项目做的更完美一些,所以关注了一些小细...
  • zf429_0
  • zf429_0
  • 2016年05月31日 14:44
  • 343

Intent显示启动与隐式启动

Android的Acitivity启动大致有两种方式:显式启动与隐式启动。下面分别介绍: A:显式启动 对于初学者来说,这个最常见,下面用代码来解释什么是显式启动。 Intent i...
  • peach0601
  • peach0601
  • 2016年02月15日 09:59
  • 678

Intent显式启动和隐式启动

众所周知 Android组件的启动模式有两种 显式调用和隐式调用,这两种调用方式从字面意思就很好理解,显式调用需要指定被启动的组件比如:Intent i= new Intent(); i.setCla...
  • u010723811
  • u010723811
  • 2015年12月22日 11:03
  • 1598

Android显示Intent和隐示Intent之间的区别?

大家直接打开下面的链接,便可了解显示Intent和隐示Intent之间的区...
  • ql15010832315
  • ql15010832315
  • 2016年09月19日 16:53
  • 369

安卓隐式Intent启动Activity和BroadcastReceiver若干注意点

隐式调用Activity和BroadcastReceiver
  • u012170463
  • u012170463
  • 2014年05月10日 14:27
  • 1449

显式intent和隐式intent的差别

显式intent和隐式intent的差别,工作中遇到的,记录一下: 比如下面413行利用显式的intent进行Activity的启动,这种显示的方式必须直接给出PackageInst...
  • lizekun2010
  • lizekun2010
  • 2016年11月04日 16:36
  • 919

android学习记录(五)显式Intent与隐式Intent的功能与使用方法解析。

显式Intent与隐式Intent的功能与使用方法解析。   Intent,在中文中的意思是意图。就是想要做的事。   而使用startActivity(Intentintent)或者startAct...
  • zuolovefu
  • zuolovefu
  • 2014年12月14日 09:23
  • 1327
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:显示Intent和隐式Intent
举报原因:
原因补充:

(最多只允许输入30个字)