快帮云

服务分类

android页面跳转和切换的方式

快帮云  2019-03-23

第一种方式,用action来跳转。

 

1、使用Action跳转,如果有一个程序的 AndroidManifest.xml中的某一个ActivityIntentFilter段中定义了包含了相同的Action那么这个Intent 就与这个目标Action匹配。如果这个IntentFilter段中没有定义 Type,Category,那么这个 Activity就匹配了。但是如果手机中有两个以上的程序匹配,那么就会弹出一个对话可框来提示说明。


Action的值在Android中有很多预定义,如果你想直接转到你自己定义的Intent接收者,你可以在接收者的 IntentFilter中加入一个自定义的Action值(同时要设定 Category值为"android.intent.category.DEFAULT"),在你的Intent中设定该值为Intent Action,就直接能跳转到你自己的Intent接收者中。因为这个Action在系统中是唯一的。

 

2,data/type,你可以用Uri来做为data,比如Uri uri = Uri.parse(http://www.google.com);


Intent i = new Intent(Intent.ACTION_VIEW,uri);手机的Intent分发过程中,会根据http://www.google.com scheme判断出数据类型type


手机的Brower则能匹配它,在BrowerManifest.xml中的IntenFilter中首先有ACTION_VIEW Action,也能处理http:type

 

3,至于分类Category,一般不要去在Intent中设置它,如果你写Intent的接收者,就在Manifest.xml Activity IntentFilter中包含android.category.DEFAULT,这样所有不设置 CategoryIntent.addCategory(String c);)的Intent都会与这个Category匹配。

 

4,extras(附加信息),是其它所有附加信息的集合。使用extras可以为组件提供扩展信息,比如,如果要执行发送电子邮件这个动作,可以将电子邮件的标题、正文等保存在extras里,传给电子邮件发送组件。

 

Java代码 package com.android.edit_text;

 

import android.app.Activity;

import android.content.Intent;

import android.os.Bundle;

import android.view.KeyEvent;

import android.view.View;

import android.widget.EditText;

 

public class MyEditText extends Activity {

 

private TextView m_TextView;

private EditText m_EditText;

 

@Override

public void onCreate(Bundle savedInstanceState) {

       super.onCreate(savedInstanceState);

       setContentView(R.layout.main);

 

       m_EditText = (EditText) this.findViewById(R.id.EditText01);

       m_EditText.setOnKeyListener(editTextKeyListener);

}

 

private EditText.OnKeyListener editTextKeyListener = new EditText.OnKeyListener() {

 

       @Override

       public boolean onKey(View arg0, int arg1, KeyEvent arg2) {

      

                     // action跳转,需要在AndroidManifest.xml中配置action

         Intent i = new Intent("android.intent.action.mydialog");

         MyEditText.this.startActivity(i);

        

         return false;

       }

};

}

复制代码Xml代码 <?xml version="1.0" encoding="utf-8"?>

<manifest xmlns:android="http://schemas.android.com/apk/res/android"

package="com.android.edit_text" android:versionCode="1"

android:versionName="1.0">

<application android:icon="@drawable/icon" android:label="@string/app_name">

       <activity android:name=".MyEditText" android:label="@string/app_name">

        < intent-filter>

            <action android:name="android.intent.action.MAIN" />

            <category android:name="android.intent.category.LAUNCHER" />

        < /intent-filter>

      < /activity>

            <!--配置跳转activity-->

       <activity android:name="com.android.dialog.MyDialog">

        < intent-filter>

<!--配置action路径-->

            <action android:name="android.intent.action.mydialog" />

            <category android:name="android.intent.category.DEFAULT" />

        < /intent-filter>

      < /activity>

</application>

<uses-sdk android:minSdkVersion="7" />

 

</manifest>

复制代码第二种方式,用类名跳转。

 

Intent负责对应用中一次操作的动作、动作涉及数据、附加数据进行描述,Android则根据此Intent的描述, 负责找到对应的组件,将 Intent传递给调用的组件,并完成组件的调用。Intent在这里起着实现调用者与被调用者之间的解耦作用。

Intent传递过程中,要找到目标消费者(另一个Activity,IntentReceiverService),也就是Intent的响应者。

 

Java代码 package com.Android;

 

import android.app.Activity;

import android.content.Intent;

import android.os.Bundle;

import android.view.View;

import android.view.View.OnClickListener;

 

public class FormStuff extends Activity {

@Override

public void onCreate(Bundle savedInstanceState) {

       super.onCreate(savedInstanceState);

       setContentView(R.layout.formstuff);

 

       final ImageButton button = (ImageButton) findViewById(R.id.android_button);

       button.setOnClickListener(new OnClickListener() {

         public void onClick(View v) {

// 用类名跳转,需要在AndroidManifest.xml中申明activity

            Intent intent = new Intent(FormStuff.this, HelloTabWidget.class);

            startActivity(intent);

         }

       });

 

}

复制代码Xml代码 <?xml version="1.0" encoding="utf-8"?>

<manifest xmlns:android="http://schemas.android.com/apk/res/android"

package="com.Android" android:versionCode="1" android:versionName="1.0">

 

<application android:icon="@drawable/icon" android:theme="@android:style/Theme.NoTitleBar">

       <activity android:name=".FormStuff" android:label="@string/app_name">

推荐阅读

上海注册融资租赁公司怎么样夫妻自拍啪啪啪

找代缴社保公司缴社保多少钱?

去哪申报绿色环保产品证书需要多少钱

哪些新兴的广州经济区适合注册公司?夫妻自拍啪啪啪

俄罗斯专利申请详情

常见问题
0