gyht0808
gyht0808
2011-04-13 07:56
浏览 290

关于显示跳转和隐式跳转问题

android支持两种跳转模式,一种比如:

Intent eulaIntent = new Intent(this, xxx.class);

另一种比如:
Intent intent = new Intent(Intent.ACTION_INSERT, getIntent().getData());
虽然这两种都能用,但是我觉得第一种更简单,快速,但是看了很多官方的demo都是用第二种来实现跳转,通过匹配intent-filter

<action android:name="android.intent.action.INSERT" />
<category android:name="android.intent.category.DEFAULT" />
<data android:mimeType="vnd.android.cursor.dir/xxxx" />

我想知道第二种的适用环境和使用第二种的理由?
有朋友愿意和我一起探讨吗?

问题补充
没有高人知道吗?
问题补充
yelinsen05 写道
你能不能用第一种跳转方式实现两个APK之间activity的跳转列?
分析下知道两种的区别了!

那按照你的意思,在同一个应用里面,我只要用第一种就可以了?
  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 邀请回答

5条回答 默认 最新

  • springof
    springof 2011-04-13 10:27
    已采纳

    显示跳转: 在你知道这的某一个处理要由某一个Activity,或你想用某一个Activity来处理你的某一个任务时。
    如你有一个ListView,点某一项,要想显示这一项的详细信息,那这个可能就要你自己写一个Activity来显示了,那个跳到这个你自己的Acitivity你一般是用Intent eulaIntent = new Intent(this, xxx.class); 因为你知道这个Acitivy的名字。

    而如果有一张图片,你想要显示这张图片,系统本身有图片浏览的程序,所以你只用调用这个程序就用以了,这个时候你不用知道这个程序是什么,只要通过Activity告诉系统你想要显示图片就可以了。而这就是隐式跳转。

    当然我不是不想说更多,而是怕说多了,把你弄混了。 你先理解一下,再看下去好了。

    在同一个程序中你也可以通过为一个Acitivy设置Action的方式,再通过
    Intent intent = new Intent(Intent.ACTION_INSERT, getIntent().getData()); 的方式让系统来使用调用这个Activity的。 当然你的Action不能和机器上已经有的程序的Action相同,不然就不能确保调用的这个Acitivity了。

    还有在程序A中调用程序B的Acitivity不能直接好Intent eulaIntent = new Intent(this, xxx.class); 因为xxx是不可见。要这样指定Activity你可以用
    intent.setClassName("com.android.email",
    "com.android.email.activity.Welcome");
    这样也可以指定Activity, com.android.email包名,com.android.email.activity.Welcome 类名,但是要注意try catch.

    不要再有人说我是去抄的了,上次我辛辛苦苦的给他慢慢讲解,他说你说的都是网上找的,对他没用。(不给分无所谓,也无需用如此卑鄙的手段嘛),有谁再说我是在网上找的我发誓再也不这么细心的回答问题了。

    谢谢。

    点赞 评论
  • lindir
    lindir 2011-04-13 07:56

    额,我也很想知道,等高人回答

    点赞 评论
  • iteye_10104
    iteye_10104 2011-04-13 07:56

    [quote="gyht0808"]android支持两种跳转模式,一种比如:
    [code="java"]Intent eulaIntent = new Intent(this, xxx.class);

    [/code]另一种比如:
    [code="java"]Intent intent = new Intent(Intent.ACTION_INSERT, getIntent().getData());
    [/code]虽然这两种都能用,但是我觉得第一种更简单,快速,但是看了很多官方的demo都是用第二种来实现跳转,通过匹配intent-filter
    [code="xml"]



    [/code]
    我想知道第二种的适用环境和使用第二种的理由?
    有朋友愿意和我一起探讨吗?
    [/quote]

    第一种是在你自己的代码里面 你可以显示的指定activity的class,

    第二种是你可以启动别的application, 比如你想在代码里面启动一个浏览器,或者调用系统的联系人。

    点赞 评论
  • yelinsen05
    yelinsen05 2011-04-13 07:56

    你能不能用第一种跳转方式实现两个APK之间activity的跳转列?
    分析下知道两种的区别了!

    点赞 评论
  • loveshirui
    loveshirui 2011-04-13 07:56

    其实两种方式都一样,不存在好不好简不简单的问题。显示的跳转是指定跳转某一个Class,是在你知道的情况下发生的跳转。隐式的跳转一般用在跳转到系统的Activity上,比如说安装apk文件,打个电话之类的Activity,这些都和Intent这个组件有关,可以看看Intent这个组件的文档

    点赞 评论

相关推荐