實現頁面跳轉——Intent
阿新 • • 發佈:2018-12-13
Intent可以理解為信使(意圖),由Intent來協作完成Android各個元件之間的通訊。
Intent實現頁面跳轉
1.直接實現A頁面跳轉到B頁面:startActivity(intent)
2.直接A啟動B頁面,切B頁面可以把資料回傳給A:startActivityForResult(intent,requestCode),
在A頁面中使用:onActiovityResult(int requestCode,int resultCode,Intent data)
在B頁面中使用:setResult(result Code, data);
頁面跳轉後是否有返回資料,第二種方式可以更靈活選擇。
以下為兩個頁面的程式碼
首先為A頁面
XML程式碼:
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical"> <Button android:layout_width="match_parent" android:layout_height="wrap_content" android:text="按鈕1" android:id="@+id/button1"/> <Button android:layout_width="match_parent" android:layout_height="wrap_content" android:text="按鈕2" android:id="@+id/button2" android:layout_marginTop="120dp" /> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="這裡是返回的資料" android:id="@+id/textView" android:layout_marginTop="180dp" /> </RelativeLayout>
業務邏輯程式碼:
package com.xuzone.appbasic.intent; 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; public class FIntent extends Activity { private Button btn1; private Button btn2; private TextView tv; private Context mContext; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_intent); //通過btn1實現頁面跳轉, //一.startActivity的方式 // 首先初始化Intetn 建立意圖,然後通過startActivity啟動意圖 mContext=this; btn1=(Button)findViewById(R.id.button1); btn2=(Button)findViewById(R.id.button2); tv=(TextView)findViewById(R.id.textView); //註冊監聽事件 btn1.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { //第一個引數為上下文物件this,第二個引數是目標檔案 Intent intent=new Intent(mContext, SIntent.class); startActivity(intent); } }); //通過btn2實現頁面跳轉, //二、通過startActivityForResult方式 //註冊監聽事件 btn2.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { Intent intent = new Intent(mContext,SIntent.class); //第一個物件是intent引數,第二個是請求的一個標識 startActivityForResult(intent, 1); } }); } //通過startActivityForResult方式跳轉,接受返回資料的方法 //requestCode 表示請求的標識 //resultCode 第二個頁面返回的標識 //data 第二個頁面回傳的資料 @Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { super.onActivityResult(requestCode,resultCode,data); if(requestCode==1&&resultCode==2){ String content=data.getStringExtra("data"); tv.setText(content); } } }
B頁面
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="match_parent" android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
android:paddingBottom="@dimen/activity_vertical_margin"
tools:context="com.xuzone.appbasic.intent.SIntent">
<Button
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="按鈕"
android:id="@+id/button"
android:layout_alignParentTop="true"
android:layout_alignParentStart="true"
android:layout_marginTop="72dp"
android:layout_alignParentEnd="true" />
</RelativeLayout>
業務邏輯程式碼
package com.xuzone.appbasic.intent;
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
public class SIntent extends Activity {
private Button Btn;
private String content="你好,我是從B頁面回傳過來的資料。";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_intent2);
//第二個頁面給第一個頁面回傳資料
//回傳資料實際回傳的位intent物件
Btn = (Button)findViewById(R.id.button);
Btn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent data=new Intent();
data.putExtra("data",content);
setResult(2,data);
//銷燬結束當前頁面
finish();
}
});
}
}