使用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中进行判断执行