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>

时间: 2024-10-25 23:28:10

Intent跳转方式的相关文章

Android之Activity的几种跳转方式

 1.显示调用方法 Intent intent=new Intent(this,OtherActivity.class);  //方法1 Intent intent2=new Intent(); intent2.setClass(this, OtherActivity.class);//方法2 intent2.setClassName(this, "com.zy.MutiActivity.OtherActivity");  //方法3 此方式可用于打开其它的应用 intent2.set

Intent跳转与传值总结

/*---------------------------------------- *-描述--Intent跳转与传值总结. *-描述--S1.Intent描述 * Intent的分类 * 1.显式意图 通常是指intent启动目标组件时明确指定了组件的名称的情况 * 一般是用在启动同一个应用程序中的组件 * 2.隐式意图 通常是指intent启动目标组件时没有明确指定了组件的名称的情况 * 只是指定了启动组件的特征,一般情况下是用在启动不同应用中的组件 * * 如果目标组件没有指定inten

Android开发——三种活动跳转方式

Android开发——三种活动跳转方式 1. 点击控件跳转 这里用 Button 举例,在布局文件中创建 Button 按钮,在再源码文件中写入活动跳转代码: Button button1 = (Button)findViewById(R.id.button1); button1.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { Toast.makeText(MainAc

Android activity跳转方式

方法一:通过SetContentView切换Layout来实现界面的切换,这种方法相当于重绘Activity. protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); Button btnInsert = (Button) this.findViewById(R.id.btnInsert); //

jsp中几种跳转方式和参数共享

整理了一下jsp入门中的跳转和数据共享问题,写成这篇博文希望对大家有帮助,参考文章列在后面: 常用的跳转方式有以下几种: (1)href超链接标记,属于客户端跳转 (2)使用javascript完成,属于客户端跳转 (3)提交表单完成跳转,属于客户端跳转 (4)使用response对象,属于客户端跳转 (5)使用requestDispatcher类,属于服务器跳转 下面一一来看 (1)href超链接标记 这个比较简单,通常写到a标签里即可,来完成指定位置的动态跳转比较方便 代码:<a href=

android intent 跳转

一.不需要返回值的跳转 Intent intent=new Intent(); intent.setClass(目前的acitivy.this, 目标activity.class); startActivity(intent); 二.需要返回值的跳转 Intent intent=new Intent(); intent.setClass(目前的acitivy.this, 目标activity.class); startActivity(intent); startActivityForResul

Android开发之Intent跳转到系统应用中的拨号界面、联系人界面、短信界面

现在开发中的功能需要直接跳转到拨号.联系人.短信界面等等,查找了很多资料,自己整理了一下.1.跳转到拨号界面,代码如下: 1)直接拨打 Intent intentPhone = new Intent(Intent.ACTION_CALL, Uri.parse("tel:" + phoneNumber)); startActivity(intentPhone); 2)跳转到拨号界面 Intent intent = newIntent(Intent.ACTION_DIAL,Uri.pars

URI跳转方式地图导航的代码实践

本文转载至 http://adad184.com/2015/08/11/practice-in-mapview-navigation-with-URI/ 前言 之前介绍了我正在做的是一款定位主打的应用 然后最近我们需要做一个定位导航的功能 能够让用户从当前位置导航到指定目的地(默认以驾车的方式导航) 手机上的导航方式 分应用内导航和应用外导航 应用内导航是指使用地图服务提供的SDK(比如高德,百度等等) 直接将导航功能嵌入到我们自己的APP内部但是这个方案我个人不喜欢 一是接入要一定的时间 二是

Intent跳转到系统应用中的拨号界面、联系人界面、短信界面及其他

现在开发中的功能需要直接跳转到拨号.联系人.短信界面等等,查找了很多资料,自己整理了一下. 首先,我们先看拨号界面,代码如下: [java] view plaincopy Intent intent =new Intent(); intent.setAction("android.intent.action.CALL_BUTTON"); startActivity(intent); 和 [java] view plaincopy Uri uri = Uri.parse("te