在activity之間傳遞數據

来源:http://www.cnblogs.com/Renyi-Fan/archive/2017/07/31/7262946.html
-Advertisement-
Play Games

在activity之間傳遞數據 一、簡介 二、通過intent傳遞數據 1、在需要傳數據的界面調用 intent.putExtra("data1", "我是fry");方法 //前面是鍵,後面是值,這個是string 2、在需要接受數據的界面調用bundle獲取傳遞過來的數據即可 Bundle bu ...


在activity之間傳遞數據

一、簡介

 

二、通過intent傳遞數據

1、在需要傳數據的界面調用

intent.putExtra("data1", "我是fry");方法

//前面是鍵,後面是值,這個是string

2、在需要接受數據的界面調用bundle獲取傳遞過來的數據即可

Bundle bundle = getIntent().getExtras();
String data1=bundle.getString("data1");

如果是string就getString(),int就getString(),什麼數據類型的方法都有

3、實例

需要傳數據的界面調用

intent.putExtra("data1", "我是fry");

需要接受數據的界面

Bundle bundle = getIntent().getExtras();
String data1=bundle.getString("data1");

data1裡面的內容就是:"我是fry"

 

三、實例

結果圖

原理:

在MainActivity頁面創建數據,然後用intent.putExtra方法將數據傳遞給Activity01頁面

代碼

activityDataSend.MainActivity

 1 package activityDataSend;
 2 
 3 
 4 
 5 
 6 
 7 import com.example.activityDataSend.R;
 8 
 9 import android.app.Activity;
10 import android.content.Intent;
11 import android.content.Loader;
12 import android.os.Bundle;
13 import android.view.View;
14 import android.view.View.OnClickListener;
15 import android.widget.Button;
16 
17 
18 
19 public class MainActivity extends Activity{
20     private Button btn_openActivty;//創建一個button對象
21      protected void onCreate(Bundle savedInstanceState) {
22             super.onCreate(savedInstanceState);//父類操作
23             setContentView(R.layout.activity_main);//引入名為activity_main的界面
24             btn_openActivty=(Button) findViewById(R.id.btn_openActivity);//找id為btn_openActivity的button
25             btn_openActivty.setOnClickListener(new OnClickListener() {//設置button點擊監聽
26                 
27                 @Override
28                 public void onClick(View v) {//onclick事件
29                     // TODO Auto-generated method stub
30                     Intent intent=new Intent();//初始化intent
31                     intent.setClass(MainActivity.this,Activity01.class);//連接
32                     //下麵這句話用於intent在activity之間傳輸data
33                     intent.putExtra("data1", "我是fry");//前面是鍵,後面是值,這個是string
34                     intent.putExtra("data2", 0.2);//這個是double
35                     //傳遞對象,serializable序列化方式
36                     testClass1_serialize class1=new testClass1_serialize("fry1",21);
37                     intent.putExtra("data3_obj", class1);
38                     
39                     //傳遞對象,parcelable序列化方式
40                     testClass2_parcelable class2=new testClass2_parcelable("fry2",22);
41                     intent.putExtra("data4_obj", class2);
42                     
43                     startActivity(intent);//打開activity
44                 }
45             });
46         }
47 }

activityDataSend.Activity01

 1 package activityDataSend;
 2 
 3 
 4 
 5 import com.example.activityDataSend.R;
 6 
 7 import android.app.Activity;
 8 import android.os.Bundle;
 9 import android.util.Log;
10 import android.widget.TextClock;
11 import android.widget.TextView;
12 
13 public class Activity01 extends Activity{
14     private TextView textView_ans;
15     @Override
16     protected void onCreate(Bundle savedInstanceState) {
17         // TODO Auto-generated method stub
18         super.onCreate(savedInstanceState);
19         setContentView(R.layout.activity01);
20         
21         textView_ans=(TextView) findViewById(R.id.textView_ans);
22         Bundle bundle = getIntent().getExtras();
23         String data1=bundle.getString("data1");
24         double data2=bundle.getDouble("data2");
25         testClass1_serialize data3_obj=(testClass1_serialize) bundle.get("data3_obj");
26         testClass2_parcelable data4_obj=(testClass2_parcelable) bundle.get("data4_obj");
27         
28         Log.d("MainActivity",bundle.get("data3_obj")+"\n"+bundle.get("data4_obj"));
29         System.out.println(bundle.get("data3_obj")+"\n"+bundle.get("data4_obj"));
30         
31         textView_ans.setText("data1: "+data1+"\ndata2: "+data2+"\ndata3_obj: "+data3_obj+"\ndata4_obj: "+data4_obj);
32         //textView_ans.setText("data1: "+data1+"\ndata2: "+data2+"\ndata4_obj: "+data4_obj);
33     }
34 }
Serializable序列化方式

activityDataSend.testClass1_serialize

 1 package activityDataSend;
 2 
 3 import java.io.Serializable;
 4 
 5 public class testClass1_serialize implements Serializable{
 6     private String name;
 7     private int age;
 8     public String getName() {
 9         return name;
10     }
11     public void setName(String name) {
12         this.name = name;
13     }
14     public int getAge() {
15         return age;
16     }
17     public void setAge(int age) {
18         this.age = age;
19     }
20     public testClass1_serialize(String name, int age) {
21         super();
22         this.name = name;
23         this.age = age;
24     }
25     public testClass1_serialize() {
26         super();
27     }
28     @Override
29     public String toString() {
30         return "testClass1_serialize [name=" + name + ", age=" + age + "]";
31     }
32     
33 }
Parcelable序列化方式
 序列化差不多要自己寫
 反序列化也要自己寫
 

activityDataSend.testClass2_parcelable

 1 package activityDataSend;
 2 
 3 import android.os.Parcel;
 4 import android.os.Parcelable;
 5 
 6 /*
 7  * Parcelable序列化方式
 8  * 序列化差不多要自己寫
 9  * 反序列化也要自己寫
10  */
11 public class testClass2_parcelable implements Parcelable{
12     private String name;
13     private int age;
14     public String getName() {
15         return name;
16     }
17     public void setName(String name) {
18         this.name = name;
19     }
20     public int getAge() {
21         return age;
22     }
23     public void setAge(int age) {
24         this.age = age;
25     }
26     public testClass2_parcelable() {
27         super();
28     }
29     public testClass2_parcelable(String name, int age) {
30         super();
31         this.name = name;
32         this.age = age;
33     }
34     
35     @Override
36     public String toString() {
37         return "testClass2_parcelable [name=" + name + ", age=" + age + "]";
38     }
39     @Override
40     public int describeContents() {
41         // TODO Auto-generated method stub
42         return 0;
43     }
44     /*
45      * 序列化
46      * (non-Javadoc)
47      * @see android.os.Parcelable#writeToParcel(android.os.Parcel, int)
48      */
49     @Override
50     public void writeToParcel(Parcel dest, int flags) {//序列化
51         // TODO Auto-generated method stub
52         dest.writeString(name);
53         dest.writeInt(age);
54     }
55     /*
56      * 反序列化要自己寫
57      */
58     public static Parcelable.Creator<testClass2_parcelable> CREATOR=new Creator<testClass2_parcelable>() {
59         
60         @Override
61         public testClass2_parcelable[] newArray(int size) {
62             // TODO Auto-generated method stub
63             return null;
64         }
65         /*
66          * 反序列化
67          * (non-Javadoc)
68          * @see android.os.Parcelable.Creator#createFromParcel(android.os.Parcel)
69          */
70         @Override
71         public testClass2_parcelable createFromParcel(Parcel source) {//反序列化
72             // TODO Auto-generated method stub
73             testClass2_parcelable class2=new testClass2_parcelable();
74             class2.setName(source.readString());
75             class2.setAge(source.readInt());
76             return class2;
77         }
78     };
79 }

 


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • <!doctype html><html lang="en"> <head> <meta charset="UTF-8"> <meta name="Generator" content="EditPlus®"> <meta name="Author" content=""> <meta name=" ...
  • 數據結構為數組中包含對象--樹形結構,用Vue組件的寫法實現以下的效果: 樹形列表,縮進顯示層級,第5級數據加底色,數據樣式顯色,點擊展開摺疊數據。本文為用Vue實現方式,另有一篇為用knockout.js的實現方法。 html代碼 組件模板代碼 JavaScript代碼 數據顯示完畢,接下來是樣式 ...
  • http equiv顧名思義,相當於http的文件頭作用,它可以向瀏覽器傳回一些有用的信息,以幫助正確和精確地顯示網頁內容,與之對應的屬性值為content,content中的內容其實就是各個參數的變數值。 引用 meat標簽的http equiv屬性語法格式是:<meta http equiv=" ...
  • JS是一門“運行在客戶端(運行在瀏覽器)”的“輕量級”的腳本編程語言 JS目前不僅僅只能在瀏覽器中運行,還可以在NODE中運行 node的優點:基於谷歌V8引擎的,具有強大的io操作,基於事件驅動的非同步 編程。 1、什麼是node node是一個環境,供JS代碼執行的環境,我們可以把他等價於瀏覽器, ...
  • 這是rem佈局的核心代碼,這段代碼的大意是:如果頁面的寬度超過了640px,那麼頁面中html的font-size恆為100px,否則,頁面中html的font-size的大小為: 100 * (當前頁面寬度 / 640) ...
  • activity之間通過全局變數傳遞數據 一、簡介 Application域中的onCreate方法是Android程式的入口,Android程式運行的時候就自動載入Application的對象,感覺Main方法應該是封裝在這個裡面的。 二、 ...
  • 在activity之間通過靜態變數傳遞數據 一、簡介 主要作用:解決intent不能傳遞非序列化的對象 評價:簡單方便,但是容易發生記憶體泄露,所以要及時回收記憶體 二、具體操作 1、在傳輸數據的頁面弄好數據,傳遞給接收數據的頁面 Obj1 obj=new Obj1("fry",22); Activit ...
  • 跳轉到AppStore評分,有兩種方法: 一種是跳出應用,跳轉到AppStore,進行評分; 另一種是在應用內,內置AppStore進行評分。 PS:appID在https://itunesconnect.apple.com中創建應用即可在應用界面獲得 1.跳出應用,跳轉到AppStore,進行評分 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...