码迷,mamicode.com
首页 > 其他好文 > 详细

Intent跳转方式

时间:2015-03-02 11:18:26      阅读:151      评论:0      收藏:0      [点我收藏+]

标签:android3.0   intent   

1.显示意图跳转

        a.一个界面就是一个Activity,因此新的界面类要继承Activity类。且必须要在清单文件中声明。(主界面已经在清单文件中声明了)声明中的android:name="包名.类名",其中的包名可以省略,称为 ".类名"   但是前面的    .     不能省略
                setContentView(R.layout.activity)   设置界面
        b.在原界面中,创建意图:Intent intent = new Intent();描述一些信息
        c.intent.setClass(this,目标类.class);
        d.表时跳转到哪个界面,这里知道要跳转到哪个界面,因此是显示的。
        e.另一方式:intent.setClassName(包名,类名);包名是清单文件中的那个package:  (this.getPackageName,类的包名.类名)
        f.startActivity(intent);开始意图
        g.应用场景,在一个应用程序内部中,知道类名,最为常用:setClass(this,SecondActivity.class);   
        h.特点是:耦合性非常高

2.隐式意图跳转

        a.应用场景:在不知道某一个Activity的类名包名,并且引用不到时,用隐式意图。隐式意图跳转到其他应用,跨应用跳跃
                跳转到其他应用的界面
                跳转到浏览器并打开百度网址
        b.特点:耦合低
        c.原界面:
                Intent intent = new Intent();
                intent.setAction("aa.bb.cc.dd")    //这里的参数与清单文件中的要一致,并且category要是DEFAULT的,如果是LAUNCHER就会出错
                startActivity(intent)
        d.在清单文件的第二个Activity中,声明一个动作action,并添加一个附加信息category

        e.隐式意图传递参数:在清单文件中,如果有schema   那么在代码中也要设置
        f.Uri:统一资源标识符     URL  :统一资源定位符     URL 是Uri的一个子集
        j.原代码中intent.setData(Uri.parse("abc:123"));
        h.清单文件,注意scheme
        i.设置mimetype:
        j.原代码中:intent.setType("list/person");    
        k.注意:setDate  setType 不能分开设置,要么只写一个,要么必须一起设置,如下
        l.intent.setDataAndType(Uri。parse("abc:123",“lsit....”);
        m.如果这么写
                setDate();内部会把type=null
                setType();内部会把data=null
                因此二者要合起来写。

目标Activity:otherActivity.java

```java
package com.example.a0703_intent_external;

import android.os.Bundle;
import android.app.Activity;
import android.view.Menu;
import android.view.View;
import android.widget.TextView;

public class otherActivity extends Activity {

        @Override
        protected void onCreate(Bundle savedInstanceState) {
                super.onCreate(savedInstanceState);
                TextView tv = new TextView(this);
                tv.setText("other999999");

                setContentView(tv);
        }
}
```
主Activity:MainActivity.java

```java
package com.example.a0703_intent_external;

import android.net.Uri;
import android.os.Bundle;
import android.view.View;
import android.app.Activity;
import android.content.Intent;

public class MainActivity extends Activity {

        @Override
        protected void onCreate(Bundle savedInstanceState) {
                super.onCreate(savedInstanceState);
                setContentView(R.layout.activity_main);
        }

        public void onClick(View v){
                //显示方式:知道目标Activity的名字
                
                //方式一:
                //参数二:创建Intent的时候就指定跳转到哪个Activity
//                Intent intent = new Intent(this, otherActivity.class);
//                startActivity(intent);
                
                //方式二:
//                Intent intent = new Intent();
                //该方法作用就是指定跳转到哪个Activity
//                intent.setClassName(this, "com.example.a0703_intent_external.otherActivity");
//                startActivity(intent);
                
                //隐式方式 不知道目标Activity的名称,但是知道目标Activity的action和一些附加信息
                Intent intent = new Intent();
                //设置action
                intent.setAction("android.intent.action.external");
                //intent.setDataAndType(Uri.parse("bbb:123"), "aaa/bbb");
                //设置附加信息
                intent.setDataAndType(Uri.parse("person:fffff"), "list/person");
                //开始跳转
                startActivity(intent);
        }

}
```
布局文件:
        

```java
activity_main.xml
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    >

    <Button
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:onClick="onClick"
        android:text="跳转" />

</RelativeLayout>

other.xml

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <Text
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="other " />

</RelativeLayout>

otherActivity.java 需要在清单文件中注册
        <activity 
                android:name="com.example.a0703_intent_external.otherActivity"
                >
                
                <intent-filter>
                        <action android:name="android.intent.action.external"/>
                        <category android:name="android.intent.category.DEFAULT"/>
                        <data android:scheme="person"/>
                        <data android:mimeType="list/person"/>
                </intent-filter>
                
        </activity>

Intent跳转方式

标签:android3.0   intent   

原文地址:http://blog.csdn.net/u012230055/article/details/44015205

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!