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>
版权声明:本文为博主原创文章,未经博主允许不得转载。