使用Intent实现页面跳转

一   什么是Intent

Intent可以理解为信使(意图)

由Intent来协助完成Android各个组件之间的通讯

二  Intent实现页面之间跳转

1.startActivity(intent)

2.startActivityForResult(intent,requestCode);

   onActivityResult(int requestCode,int resultCode,Intent data)

   setResult(resultCode,data);

 

1.startActivity(intent)

FaActivity.java 

package com.example.faactivity;
import android.app.Activity;
import android.content.Context;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.TextView;

public class FaActivity extends Activity
{
    private Button bt1;
//    private Context mContext;
    private Button bt2;
    private TextView tv;
    @Override
    protected void onCreate(Bundle savedInstanceState)
    {
        // TODO Auto-generated method stub
        super.onCreate(savedInstanceState);
        setContentView(R.layout.fa_activity);
/*
 *     通过点击bt1实现页面之间的跳转
 *     1.startActivity的方式来实现
 *         1>初始化Intent
*/        
//        mContext=this;
        bt1=(Button)findViewById(R.id.button1);
//        注册点击事件
        bt1.setOnClickListener(new OnClickListener()
        {
            @Override
            public void onClick(View arg0)
            {
                // TODO Auto-generated method stub
                /*
                 * 第一个参数:上下文对象
                 * 1.FaActivity.this    2.在上面定义一个全局变量
                 * private Context mContex;
                 * MContext=this;
                 * 直接写MContext
                 * 第二个参数:目标文件
                 */
//                Intent intent=new Intent(mContext, SecondAcitivty.class);
                Intent intent=new Intent(FaActivity.this, SecondAcitivty.class);
                startActivity(intent);
            }
        });
        bt2=(Button)findViewById(R.id.button2);
        tv=(TextView)findViewById(R.id.textView1);
    }
} 

SecondAcitivty.java

package com.example.faactivity;

import android.app.Activity;
import android.os.Bundle;

public class SecondAcitivty extends Activity
{
    @Override
    protected void onCreate(Bundle savedInstanceState)
    {
        // TODO Auto-generated method stub
        super.onCreate(savedInstanceState);
        setContentView(R.layout.secondactivity);
    }
}

AndriodMainfest.xml

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

    <uses-sdk
        android:minSdkVersion="8"
        android:targetSdkVersion="18" />

    <application
        android:allowBackup="true"
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name"
        android:theme="@style/AppTheme" >
        <activity
            android:name="com.example.faactivity.MainActivity"
            android:label="@string/app_name" >
         
        </activity>
          <activity
            android:name="com.example.faactivity.FaActivity"
            android:label="@string/app_name" >
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>[<iintent-filter>决定首页的出现]
        </activity>
          <activity
            android:name="com.example.faactivity.SecondAcitivty"
            android:label="@string/app_name" >
      
        </activity>
    </application>

</manifest>

 <intent-filter>

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

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

 </intent-filter>

<iintent-filter>

----------------决定首页的出现

 

Fa_activity.xml

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

    <Button
        android:id="@+id/button1"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:text="第一种启动方式" />

    <Button
        android:id="@+id/button2"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:text="第二种启动" />

    <TextView
        android:id="@+id/textView1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="把第二页面回传的数据显示出来" />

</LinearLayout>

secondactivity.xml

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

    <Button
        android:id="@+id/button1"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:text="Button" />

</LinearLayout>

 

 

2.startActivityForResult(intent,requestCode);

   onActivityResult(int requestCode,int resultCode,Intent data)

   setResult(resultCode,data);

FaActivity.java 

package com.example.faactivity;

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

public class FaActivity extends Activity
{
    private Button bt1;
//    private Context mContext;
    private Button bt2;
    private TextView tv;
    @Override
    protected void onCreate(Bundle savedInstanceState)
    {
        // TODO Auto-generated method stub
        super.onCreate(savedInstanceState);
        setContentView(R.layout.fa_activity);
/*
 *     通过点击bt1实现页面之间的跳转
 *     1.startActivity的方式来实现
 *         1>初始化Intent
*/        
//        mContext=this;
        bt1=(Button)findViewById(R.id.button1);
//        注册点击事件
        bt1.setOnClickListener(new OnClickListener()
        {
            @Override
            public void onClick(View arg0)
            {
                // TODO Auto-generated method stub
                /*
                 * 第一个参数:上下文对象
                 * 1.FaActivity.this    2.在上面定义一个全局变量
                 * private Context mContex;
                 * MContext=this;
                 * 直接写MContext
                 * 第二个参数:目标文件
                 */
//                Intent intent=new Intent(mContext, SecondAcitivty.class);
                Intent intent=new Intent(FaActivity.this, SecondAcitivty.class);
                startActivity(intent);
            }
        });
        /*
         * 通过startActivityForresult
         */
        bt2=(Button)findViewById(R.id.button2);
        bt2.setOnClickListener(new OnClickListener()
        {
            
            @Override
            public void onClick(View arg0)
            {
                // TODO Auto-generated method stub
                Intent intent=new Intent(FaActivity.this,SecondAcitivty.class);//初始化跳转信号
                /*
                 * 第一个参数是Intent对象
                 * 第二个参数是请求的一个标识
                 */
                startActivityForResult(intent, 1);//请求跳转方法(跳转信号,请求跳转标识码)
            }
        });
        tv=(TextView)findViewById(R.id.textView1);
    }
    /*
     * 通过    startActivityForresult跳转,接受返回数据的方法
     *requestCode:请求的标识
     *resultCode:第二个页面返回的标识
     *data:第二个页面回传的数据
     */
    @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data)
    //接收回传数据方法(请求跳转标识码,接收回传标识码,回传数据)
    {
        // TODO Auto-generated method stub
        super.onActivityResult(requestCode, resultCode, data);//父类方法(参数同上)
        if(requestCode==1&&resultCode==2){//通过请求码和回传码判断是否接收数据
    String string=data.getStringExtra("data");//创建字符串接收数据
    tv.setText(string);//把数据放入文本框
        }
    }
} 

SecondAcitivty.java

package com.example.faactivity;

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

public class SecondAcitivty extends Activity
{
    private Button bt1;
    private String string="你好";
    @Override
    protected void onCreate(Bundle savedInstanceState)
    {
        // TODO Auto-generated method stub
        super.onCreate(savedInstanceState);
        setContentView(R.layout.secondactivity);
        /*
         * 第二个页面什么时候给第一个页面回传数据
         *    回传到第一个页面的实际上是一个Intent对象 
         */
        bt1=(Button)findViewById(R.id.button);
        bt1.setOnClickListener(new OnClickListener()
        {
            
            @Override
            public void onClick(View arg0)
            {
                // TODO Auto-generated method stub
                Intent dataIntent=new Intent();//初始化跳转信号
                dataIntent.putExtra("data", string);//创建回传数据并与跳转信号绑定
                setResult(2, dataIntent);//设置跳转命令(回传码,回传数据)
                    //结束当前页面
                finish();
            }
        });
    }
}
 Intent dataIntent=new Intent();//初始化跳转信号
 dataIntent.putExtra("data", string);//创建回传数据并与跳转信号绑定
 setResult(2, dataIntent);//设置跳转命令(回传码,回传数据)
  //结束当前页面
  finish();
————————回传的页面用到的方法: 
putExtra(“Intent对象”,回传的内容)
setResult(结果码(resultcode),Intent对象)


intent回传数据接收,在请求的activity中接收被请求的activity回传的数据,通过请求标识和结果标识判断是哪个activity回传的数据

 

startActivityForResult方式启动Activity 从Activity1 启动 Activity2
1、重写Activity1中的onActivityResult方法
2、在Activity1中使用startActivityForResult中启动Activity2
3、在Activity2中使用setResult(int resultCode, intent);finish()来返回到上一个Activity,上一个Activity在onActivityResult中进行判断执行

 

 

posted @ 2016-03-03 21:27  沉默的羊癫疯  阅读(303)  评论(0编辑  收藏  举报