什麼是Intent Intent可以理解為信使(意圖) 由Intent來協作完成Android各個組件之間的通訊, 也可以說是實現頁面與頁面之間的跳轉 Intent實現頁面之間的跳轉 startActivityForResult(intent, requestCode); //第二種啟動方式 onA ...
什麼是Intent
Intent可以理解為信使(意圖)
由Intent來協作完成Android各個組件之間的通訊, 也可以說是實現頁面與頁面之間的跳轉
Intent實現頁面之間的跳轉
- startActivity(intent) //第一種方式啟動
-
startActivityForResult(intent, requestCode); //第二種啟動方式
onActivityResult(int requestCode, int resultCode, Intent data)
setResult(resultCode, data);
第一種啟動方式實現直接跳轉,無返回值
第二種啟動方式A頁面->B頁面, B頁面也能回傳到A頁面數據
onActivityResult(int requestCode, int resultCode, Intent data)
這個是 用來A頁面接收B頁面回傳的數據用的
setResult(resultCode, data) 這個是用來B頁面回傳給A頁面數據
首先創建一個項目
新建兩個Activity
然後再layout 裡面新建兩個頁面佈局 layout右鍵ànewàAndroid XML File
隨後,進行綁定,例如:
然後,配置清單文件AndroidManifest.xml
然後,在activity_first 插入兩個button 一個textview 分別用來第一個和第二個跳轉方式, 以及數據回傳,代碼如下:
1 <?xml version="1.0" encoding="utf-8"?> 2 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 3 android:layout_width="match_parent" 4 android:layout_height="match_parent" 5 android:orientation="vertical" > 6 7 <Button 8 android:id="@+id/bt_first" 9 android:layout_width="match_parent" 10 android:layout_height="wrap_content" 11 android:text="第一種啟動方式" /> 12 13 <Button 14 android:id="@+id/bt_Second" 15 android:layout_width="match_parent" 16 android:layout_height="wrap_content" 17 android:text="第二種啟動方式" /> 18 19 <TextView 20 android:id="@+id/textview" 21 android:layout_width="match_parent" 22 android:layout_height="wrap_content" 23 android:text="把第二個頁面回傳的數據顯示" /> 24 25 </LinearLayout>
剛纔提到了,實現跳轉需要用到Intent意圖,代碼很簡單 清晰明瞭 我直接貼代碼了
首先 FirstActivity
1 package com.example.intentdemo; 2 3 import android.app.Activity; 4 import android.content.Intent; 5 import android.os.Bundle; 6 import android.view.View; 7 import android.view.View.OnClickListener; 8 import android.widget.Button; 9 import android.widget.TextView; 10 11 public class FirstActivity extends Activity { 12 Button bt_first, bt_second; 13 TextView textView; 14 15 @Override 16 protected void onCreate(Bundle savedInstanceState) { 17 super.onCreate(savedInstanceState); 18 setContentView(R.layout.activity_first); 19 20 initView(); 21 } 22 23 private void initView() { 24 // 關聯控制項 25 bt_first = (Button) findViewById(R.id.bt_first); 26 bt_second = (Button) findViewById(R.id.bt_Second); 27 textView = (TextView) findViewById(R.id.textview); 28 bt_first.setOnClickListener(new OnClickListener() { 29 30 @Override 31 public void onClick(View arg0) { 32 // 第一種跳轉,無數據返回跳轉 33 Intent intent = new Intent(FirstActivity.this, 34 SecondActivity.class); 35 intent.putExtra("content", "第一種跳轉方式"); 36 startActivity(intent); 37 } 38 }); 39 bt_second.setOnClickListener(new OnClickListener() { 40 41 @Override 42 public void onClick(View arg0) { 43 // 第二種方式,有數據返回跳轉 44 Intent intent = new Intent(FirstActivity.this, 45 SecondActivity.class); 46 intent.putExtra("content", "第二種跳轉方式"); 47 48 /* 49 * 第一個參數是intent對象 第二個參數的請求的一個標識 50 */ 51 startActivityForResult(intent, 1); 52 } 53 }); 54 } 55 56 /* 57 * 通過startActivityForresult跳轉,接收返回數據的方法 requestCode:請求的標識 58 * resultCode:第二個頁面返回的標識 data:第二個頁面回傳的數據 59 */ 60 61 @Override 62 protected void onActivityResult(int requestCode, int resultCode, Intent data) { 63 super.onActivityResult(requestCode, resultCode, data); 64 if (requestCode == 1) { 65 if (resultCode == 1) { 66 String text = data.getStringExtra("content"); 67 textView.setText(text); 68 } 69 } 70 } 71 }
SecondActivity代碼如下:
1 package com.example.intentdemo; 2 3 import android.app.Activity; 4 import android.content.Intent; 5 import android.os.Bundle; 6 import android.view.View; 7 import android.view.View.OnClickListener; 8 import android.widget.Button; 9 import android.widget.TextView; 10 11 public class SecondActivity extends Activity { 12 TextView textView; 13 Button button; 14 @Override 15 protected void onCreate(Bundle savedInstanceState) { 16 super.onCreate(savedInstanceState); 17 setContentView(R.layout.activity_second); 18 //獲取第一個頁面的意圖 19 Intent intent = getIntent(); 20 21 button = (Button) findViewById(R.id.button); 22 textView = (TextView) findViewById(R.id.textview); 23 //接收第一個頁面傳送的數據 24 textView.setText(intent.getStringExtra("content")); 25 button.setOnClickListener(new OnClickListener() { 26 27 @Override 28 public void onClick(View arg0) { 29 setResult(1, new Intent().putExtra("content", "從第二個頁面返回")); 30 //結束當前頁面 31 finish(); 32 } 33 }); 34 } 35 }
這樣就簡單的實現了,
如果有不懂的可以在下麵發,我看到會幫你解決,Android其他問題也可以
下麵貼上Demo:https://pan.baidu.com/s/16HEQ1pVnpB995i3-lAG7qw