码迷,mamicode.com
首页 > 移动开发 > 详细

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

时间:2015-09-01 09:13:21      阅读:207      评论:0      收藏:0      [点我收藏+]

标签:intent   android   功能相近比较   具体实现   

                     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>



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

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

标签:intent   android   功能相近比较   具体实现   

原文地址:http://blog.csdn.net/j_a_v_a_guan/article/details/48152313

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