Android自学笔记之Intent 页面跳转详解

Intent:意图,协助完成Android各个组件之间的通讯

 
 实现跳转功能有两种实现方式:1.无返回值的跳转 2.有返回值的跳转

一、无返回值的跳转实现需要用到的方法:startActivity(intent)

二、有返回值的跳转实现需要用到的方法:

startActivityForResult(intent,requestCode)//有返回值

onActivityResult(int requestCode,int resultCode,Intent data)//接收返回值A页面

setResult(resultCode,data)//设置返回值B页面

第一种方法

①创建两个Acitivity.java\两个xml

②重写onCreate()方法、setContentView(R.layout.factivity)引入页面

③在AndroidMainifest.xml中声明<activity>

包括改名字name属性、有intent_filter的是首启动页面

④按钮初始化(声明、findViewById)、setOnclickListener()

⑤在onClick()中

Intent intent=new Intent(FActivity.this,SAcitivity.class)

//(上下文对象,)上下文对象也可以声明一个Context的全局化变量,在使context=this

//目标文件

startActivity(intent);

第二种方法

有返回结果的页面跳转。

FActivity第一个页面中:

1、startActivityForResult(intent,requestCode)

第一个参数是Intent对象

第二个参数是请求的一个标志

2、通过startActivityForResult跳转,接收返回数据的方法:【在按钮的点击事件中】

onActivityResult(int requestCode,int resultCode,Intent data)

requestCode:请求的标志(不同的页面标志不同,通过这个标志接收不同的返回数据)

resultCode:第二个页面返回的标志(通过这两个标志判断是哪个页面返回的数据)

data:第二个页面回传的数据

SActivity第二个页面中:setResult(resultCode,data)

3、回传到第一个页面的实际上是一个Intent对象【在按钮的点击事件中】

Intent data = new Intent();

data.putExtra("data",content); //事先初始化了一个变量private String content = "你好";

setResult(2,data);

finish(); //结束当前页面

我将这两种方法写在一起,不要需要创建的.class .xml太多了; FActivity.class
关联factivity.xml,SActivity.class 关联sactivity.xml。然后在AndroidMainfest.xml加入FActivity,SActivity,然后修改 <intent-filter>即哪个.class首先运行。最后运行上述步骤,就可以实现页面跳转了:

具体实现:

FActivity.class:

package com.example.administrator.activitydemo;

import android.app.Activity;
import android.content.Context;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;

/**
 * Created by Administrator on 2015/8/31.
 */
public class FActivity extends Activity {
    private Button button;
    private Button bt;
    private Context context;
    private TextView textView;

    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.factivity);

        /*
         *
         *
         * ①创建两个Acitivity.java\两个xml
          ②重写onCreate()方法、setContentView(R.layout.factivity)引入页面
          ③在AndroidMainifest.xml中声明<activity>
              包 括改名字name属性、有intent_filter的是首启动页面
          ④按钮初始化(声明、findViewById)、setOnclickListener()
              ⑤在onClick()中
           Intent intent=new Intent(FActivity.this,SAcitivity.class)
                / /(上下文对象,)上下文对象也可以声明一个Context的全局化变量,在使context=this
                   //目标文件
                 startActivity(intent);
         */
        context = this;

        textView = (TextView) findViewById(R.id.textView);
        button = (Button) findViewById(R.id.button_first);
        button.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Intent intent=new Intent(context,SActivity.class);
                startActivity(intent);
            }
        });
        bt  = (Button) findViewById(R.id.button2);
        bt.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Intent intent = new Intent(context,SActivity.class);
                startActivityForResult(intent,1);
            }
        });
    }

    @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        super.onActivityResult(requestCode, resultCode, data);

        if(requestCode==1&&resultCode==2){
            String context = data.getStringExtra("data");
            textView.setText(context);
        }
    }
}

SActivity.class:

package com.example.administrator.activitydemo;

import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;

/**
 * Created by Administrator on 2015/8/31.
 */
public class SActivity extends Activity {
    private Button button;
    private String context = "Hello";
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.sactivity);
        button = (Button) findViewById(R.id.button);
        button.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Intent data = new Intent();
                data.putExtra("data",context);
                setResult(2,data);
                //销毁这个页面
                finish();
            }
        });
    }
}

factivity.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical" android:layout_width="match_parent"

    android:layout_height="match_parent">

    <Button
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="第一个Button按钮"
        android:id="@+id/button_first" />

    <Button
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="第二个Button按钮"
        android:id="@+id/button2"
        android:layout_gravity="center_horizontal" />

    <TextView
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="实现跳转页面功能"
        android:id="@+id/textView"
        android:layout_gravity="center_horizontal" />
</LinearLayout>

sactivity.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical" android:layout_width="match_parent"
    android:layout_height="match_parent">

    <Button
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="New Button"
        android:id="@+id/button" />
</LinearLayout>

修改主布局AndroidMainfest.xml:

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.example.administrator.activitydemo" >

    <application
        android:allowBackup="true"
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name"
        android:theme="@style/AppTheme" >
        <activity
            android:name=".MainActivity"
            android:label="@string/app_name" >
        </activity>
        <activity
            android:name=".FActivity"
            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
            android:name=".SActivity"
            android:label="@string/app_name" >

        </activity>
    </application>

</manifest>

版权声明:本文为博主原创文章,未经博主允许不得转载。

时间: 2024-10-10 14:29:03

Android自学笔记之Intent 页面跳转详解的相关文章

Android混合应用开发之页面跳转

Android混合开发之Activity类与html页面之间的相互跳转(并解决黑屏问题) 在底部有本程序源码下载 本程序流程:程序启动-->testActivity--->phonegap2框架类--->index.html--->testActivity,主要实现activity与html页面的相互跳转,并实现 传递参数的功能. 程序结构图: 1.创建一个安卓项目,在该项目里面添加PhoneGap框架(具体步骤请点击查看),我们知道我们在定义一个主界面的时候往往用的是Activi

Android自学笔记-16-任务栈

题目链接:http://acm.fzu.edu.cn/problem.php?pid=2170 贴个baka爷的代码留念.. 数据出的有问题,输入的字符串长度不超过1000 #include<iostream> #include<cstdio> #include<cstring> #include<string> #include<algorithm> #include<map> #include<queue> #incl

Android学习笔记-Activity&Intent

界面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="matc

Android自学笔记-17-广播接收者(BroadcastReceiver)

下载地址: http://pan.baidu.com/s/1pJ2lWYB Android自学笔记-17-广播接收者(BroadcastReceiver),码迷,mamicode.com

Android应用盈利广告平台的嵌入方法详解

一.如何学习Android   android开发(这里不提platform和底层驱动)你需要对Java有个良好的基础,一般我们用Eclipse作为开发工具.对于过多的具体知识详细介绍我这里不展开,我只说我个人的学习方法和本人以为的好的步骤.   1.搭建环境:包括对Java和Eclipse及模拟器(有真机再好不过)的熟悉,对于android的tools和adb命令可以放到后面熟悉了解.   2.从helloworld开始:了解一个基本的android应用代码包含哪些,各部分做什么用.(这里只要

Android 最火的快速开发框架AndroidAnnotations使用详解

Android 最火的快速开发框架androidannotations配置详解文章中有eclipse配置步骤,Android 最火快速开发框架AndroidAnnotations简介文章中的简单介绍,本篇注重讲解AndroidAnnotations中注解方法的使用. @EActivity 示例: @EActivity(R.layout.main) public class MyActivity extends Activity { } @fragment 示例: @EFragment(R.lay

算法学习笔记 KMP算法之 next 数组详解

最近回顾了下字符串匹配 KMP 算法,相对于朴素匹配算法,KMP算法核心改进就在于:待匹配串指针 i 不发生回溯,模式串指针 j 跳转到 next[j],即变为了 j = next[j]. 由此时间复杂度由朴素匹配的 O(m*n) 降到了 O(m+n), 其中模式串长度 m, 待匹配文本串长 n. 其中,比较难理解的地方就是 next 数组的求法.next 数组的含义:代表当前字符之前的字符串中,有多大长度的相同前缀后缀,也可看作有限状态自动机的状态,而且从自动机的角度反而更容易推导一些. "前

Android研究之英特尔 Android* 开发人员指南上的对等应用详解

简介 当没有 Wi-Fi 访问点或互联网访问时,Android* 应用可能需要对等连接在两台或多台 Android* 设备之间建立连接. 比如,文件共享应用和多人游戏. 该功能可使用 NFC.蓝牙或 Wi-Fi 对等技术来实施. 特定案例中的首选技术需要根据所需的距离.连接速度.功耗和独特的技术特性来决定. 本文将对 Wi-Fi 对等技术进行评估. Wi-Fi 对等(P2P)支持具备适当应用的 Android 4.0 或更高版本在没有接入点的情况下通过 Wi-Fi 彼此连接. Android W

Qt on Android: Qt Quick 组件与对象动态创建详解

在<Qt on Android: Qt Quick 事件处理之信号与槽>一文中介绍自定义信号时,举了一个简单的例子,定义了一个颜色选择组件,当用户在组建内点击鼠标时,该组件会发出一个携带颜色值的信号,当时我使用 Connections 对象连接到组件的 colorPicked 信号,改变文本的颜色. 当时用到的 Component . Loader 两个特性,一直没来得及介绍,可能很多人都还在雾里看花呢.这次呢,我们就来仔仔细细地把他们讲清楚. 请给我的参赛文章<Qt on Androi