标签: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> |
标签:android3.0 intent
原文地址:http://blog.csdn.net/u012230055/article/details/44015205