1. 程式人生 > >Android Intent之傳遞帶有物件的集合(Serializable傳遞物件和物件集合)

Android Intent之傳遞帶有物件的集合(Serializable傳遞物件和物件集合)

Android中Intent傳遞類物件提供了兩種方式一種是 通過實現Serializable介面傳遞物件,一種是通過實現Parcelable介面傳遞物件。

要求被傳遞的物件必須實現上述2種介面中的一種才能通過Intent直接傳遞。

Intent中傳遞這2種物件的方法:

  1. Bundle.putSerializable(Key,Object);  //實現Serializable介面的物件
  2. Bundle.putParcelable(Key, Object); //實現Parcelable介面的物件

 一、傳遞物件

假設由登入介面(Login)跳轉到主介面(MainActivity)傳遞的物件為登入的使用者資訊 User類

1.首先建立一個序列化類:User

  1. package org.yayun.demo;  
  2. import java.io.Serializable;  
  3. import android.R.integer;  
  4. publicclass User implements Serializable {  
  5.     private String name;  
  6.     privateint level;  
  7.     public String getName() {  
  8.         return name;  
  9.     }  
  10.     publicvoid setName(String name) {  
  11.         this
    .name = name;  
  12.     }  
  13.     publicint getLevel() {  
  14.         return level;  
  15.     }  
  16.     publicvoid setLevel(int level) {  
  17.         this.level = level;  
  18.     }  
  19.     public User(String name,int level) {  
  20.         this.name=name;  
  21.         this.level=level;  
  22.     }  
  23. }  


注意點,類實現Serializable介面

2.佈局檔案很簡單,main.xml中一個Button,login.xml中一個TextView:

  1. <?xmlversion="1.0"encoding="utf-8"?>
  2. <LinearLayoutxmlns:android="http://schemas.android.com/apk/res/android"
  3.     android:layout_width="fill_parent"
  4.     android:layout_height="fill_parent"
  5.     android:orientation="vertical">
  6.     <Button
  7.         android:id="@+id/btn"
  8.         android:layout_width="fill_parent"
  9.         android:layout_height="wrap_content"
  10.         android:text="登入"/>
  11. </LinearLayout>
  1. <?xmlversion="1.0"encoding="utf-8"?>
  2. <LinearLayoutxmlns:android="http://schemas.android.com/apk/res/android"
  3.     android:layout_width="fill_parent"
  4.     android:layout_height="fill_parent"
  5.     android:orientation="vertical">
  6.     <TextView
  7.         android:id="@+id/text"
  8.         android:layout_width="fill_parent"
  9.         android:layout_height="wrap_content"
  10.         android:text=""/>
  11. </LinearLayout>


3.MainActivity.java

  1. package org.yayun.demo;  
  2. import android.app.Activity;  
  3. import android.content.Intent;  
  4. import android.os.Bundle;  
  5. import android.view.View;  
  6. import android.view.View.OnClickListener;  
  7. import android.widget.Button;  
  8. publicclass MainActivity extends Activity {  
  9.     private Button button;  
  10.     publicvoid onCreate(Bundle savedInstanceState) {  
  11.         super.onCreate(savedInstanceState); // 生命週期方法
  12.         super.setContentView(R.layout.main); // 設定要使用的佈局管理器
  13.     button=(Button)findViewById(R.id.btn);  
  14.     button.setOnClickListener(new OnClickListener() {  
  15.         publicvoid onClick(View v) {  
  16.             User user=new User("yayun"7);//例項化物件
  17.             Intent intent=new Intent();  
  18.             intent.setClass(MainActivity.this, LoginActivity.class);  
  19.             Bundle bundle=new Bundle();  
  20.             bundle.putSerializable("user", user);//序列化
  21.             intent.putExtras(bundle);//傳送資料
  22.             startActivity(intent);//啟動intent
  23.         }  
  24.     });  
  25.     }  
  26. }  


4.接收Activity--LoginActivity.java:

  1. package org.yayun.demo;  
  2. import android.app.Activity;  
  3. import android.content.Intent;  
  4. import android.os.Bundle;  
  5. import android.widget.TextView;  
  6. publicclass LoginActivity extends Activity {  
  7.     private TextView textView;  
  8.     publicvoid onCreate(Bundle savedInstanceState) {  
  9.         super.onCreate(savedInstanceState); // 生命週期方法
  10.         super.setContentView(R.layout.login); // 設定要使用的佈局管理器
  11.         textView = (TextView) findViewById(R.id.text);  
  12.         Intent intent = this.getIntent();  
  13.         User user = (User) intent.getSerializableExtra("user");  
  14.         textView.setText("使用者名稱:" + user.getName() + "使用者等級"
  15.                 + String.valueOf(user.getLevel()));  
  16.     }  
  17. }  


5.執行例項如下:

可以看出,物件已經成功傳過來了!

二、傳遞物件集合

1.佈局檔案沒有改變,我們看一下MainActivity.java:

  1. package org.yayun.demo;  
  2. import java.io.Serializable;  
  3. 相關推薦

    Android Intent傳遞帶有物件集合(Serializable傳遞物件物件集合)

    Android中Intent傳遞類物件提供了兩種方式一種是 通過實現Serializable介面傳遞物件,一種是通過實現Parcelable介面傳遞物件。要求被傳遞的物件必須實現上述2種介面中的一種才能通過Intent直接傳遞。Intent中傳遞這2種物件的方法:Bundle

    Android 學習路一:Activity之間傳遞資料的四種方式

    傳遞資料 新建 Activity 在專案中右鍵,選擇 New,繼續選擇中下方的 Activity,最後是 Blank Activity。 此時 Android Studio 會為我們自動新增一個對應的佈局檔案,為佈局檔案中的 TextView 新增 I

    Android Intent傳值反饋,向後傳遞,要求返回的傳值

    很簡單 1. 傳值跳轉到第二個activity Intent intent=new Intent(MainActivity.this,TwoActivity.class); startAct

    Android開發實現滑動RecyclerView,浮動按鈕的顯示隱藏(一)

    本篇部落格,主要講解了滑動RecyclerView實現FloatingActionButton的顯示和隱藏的動畫。 -------------------------------分割線----------------------------- 效果圖展示: -------

    Android開發RecyclerView的互動動畫(實現拖拽刪除)

    做RecyclerView做相關的動畫效果的時候,用的最多的是v7包下的ItemTouchHelper類,這個類很強大,如有興趣的童鞋可以自行翻看原始碼,接下來我帶領大家實現RecyclerView相關的互動動畫。大家看下面的效果(拖拽和刪除): ------------

    面向物件程式設計介紹,類物件

    想一想 請用程式描述如下事情: A同學報道登記資訊 B同學報道登記資訊 C同學報道登記資訊 A同學做自我介紹 B同學做自我介紹 C同學做自我介紹 stu_a = { “name”:“A”, “age”:21, “gender”:1, “hometown”:“河北” } stu_b = {

    物件01 簡單認識類物件

    接下來我們就開始學習C++的部分 首先 我們要搞清楚C++語言是一門面向物件的程式語言   問: 首先什麼是程式設計思想? 答: 所謂的程式設計思想 就是人們用計算機來解決實際問題的時候的一種思維方式 或者說是一種基本的策略 常見的程式設計思想有面向過程(例如c語言)和

    1.面向過程程式設計 2.面向物件程式設計 3.類物件 4.python 建立類物件 如何使用物件 5.屬性的查詢順序 6.初始化函式 7.繫結方法 與非繫結方法

    1.面向過程程式設計 面向過程:一種程式設計思想在編寫程式碼時 要時刻想著過程這個兩個字過程指的是什麼? 解決問題的步驟 流程,即第一步幹什麼 第二步幹什麼,其目的是將一個複雜的問題,拆分為若干的小的問題,按照步驟一一解決,也可以說 將一個複雜的問題,流程化(為其制定一個固定的實現流程),從而變得簡單化例如

    JAXB實現XMLjava物件互轉以及soapXml物件互轉需要注意的地方

    public class JaxbXmlUtil { private static final String DEFAULT_ENCODING = "UTF-8"; /** * pojo轉換成xml 預設編碼UTF-8 */ public static

    JAVA_TOJAVASE_Day0809(面向物件,陣列工具的建立物件繼承、單例設計模式、抽象類)

    面向物件,陣列工具的建立和物件繼承 優化: package com.ttzx.study.utils; /** * 建立一個用於運算元組的工具類,其中包含著常見的對陣列操作的函式,如:最值排序等。 * @author 子龍 * @version V1.0 *

    Java筆記(7)-輸入、輸出流、File類、InputStream、Reader、檔案位元組流、檔案字元流、緩衝流、隨機流、資料流、物件流、序列化物件克隆、Scanner解析檔案、Console流

    所有的合適都是兩個人的相互遷就和改變,沒有天生合適的兩個人,兩個人朝著相同的方向努力,就是最好的愛情。 輸入、輸出流 什麼是“流”。直觀地講,流就像水一樣,不存在大小問題,也避免了完整性問題。非流的資料傳輸,比如你下載一張圖片,需要整幅圖片下

    Android Intent引數傳遞,包括物件複雜集合等多方式傳遞

    用Intent傳遞資料的時候,如果傳遞的是基本型別,不用說很容易,單個的就是單個的傳,多個就用bundle傳遞,如果傳遞的是物件或者是集合,簡單的某個集合還是可以直接傳的,但是大多數的是不可以傳的。在傳遞物件的時候有兩種方式,一種是實現Parcelable或者Seriali

    android intent傳遞物件集合

    傳遞物件 Article article =JsonUtils.getArticle(content); intent =newIntent(activity,Compositi

    Android中如何使用Intent在Activity之間傳遞物件[使用Serializable或者Parcelable]

          在Android中的不同Activity之間傳遞物件,我們可以考慮採用Bundle.putSerializable(Key,Object);也可以考慮採用Bundle.putParcelable(Key, Object);其中前面一種方法中的Object要實現Se

    FC 13.2 使用Intent傳遞物件SerializableParcelable)

    使用Intent的putExtra方法可以傳遞資料,但是不能直接來傳遞自定義的物件。接下來學習兩種床底物件的方式 Serializable方式 Parcelable方式 兩種方式的詳細講解   Serializable方式 Serializable是序

    android activity之間傳遞物件Serializable Parcelable)

    Android中Intent中傳遞物件的方法, 一種是Bundle.putSerializable(Key,Object); 另一種是Bundle.putParcelable(Key, Object); 當然這些Object是有一定的條件的,前者是實現了Serializa

    android intent 傳遞list 或 物件 (轉)

    當然這些Object是有一定的條件的,前者是實現了Serializable介面,而後者是實現了Parcelable介面 方法四: 用intent傳來傳去 覺得不方便 我們可以寫一個在application裡面的全域性資料  1、建立一個屬於你自己的android.app.Application的子類  2、在

    Android Intent傳遞物件ArrayList【大明進化十八】

             以前做專案的時候,需要Intent 傳遞複雜型別,例如:陣列,ArrayList型別,傳遞類物件,今天抽空寫了個例子,方便以後用的時候查詢!有問題可以留言; 轉載請標明出處:               程式主介面:                  

    android Intent 傳遞 List 利用Serializable

    Intent是Activity與Activity之間,Activity與Service之間傳遞引數的介質 Intent.putExtras(key, value)幾乎可以包括各種型別的值,但是卻沒有類似List<Object>之類的傳遞引數 再加班無聊的時候,

    Android--Intent組件帶參傳遞與返回

    puts 例子 ast pause onstop 圖標 訪問 數據頁面 .com Android 是 單例模式:   表示 application 唯一的。每個應用被啟動的時候,其實是 application 被創建。 Context 上下文:   context 是