【Android 開發】 : Activity之間傳遞資料的幾種方式
在Android開發中,我們通常需要在不同的Activity之間傳遞資料,下面我們就來總結一下在Activity之間資料傳遞的幾種方式。
1. 使用Intent來傳遞資料
Intent表示意圖,很多時候我們都會利用Android的Intent來在各個Activity之間傳遞資料,這也是Android比較官方的一種資料傳遞的方式
需求1:從一個Activity(IntentDemo)跳轉到另外一個Activity(Other),其中利用Intent來傳遞資料
程式Demo如下:
IntentDemo.java
- package com.android.intentdemo;
- import android.app.Activity;
- import android.content.Intent;
- import android.os.Bundle;
- import android.view.View;
- import android.widget.Button;
- publicclass IntentDemo extends Activity {
- private Button button;
- @Override
- publicvoid onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- setContentView(R.layout.main);
- initComponent();
- button.setOnClickListener(new View.OnClickListener() {
- @Override
- publicvoid onClick(View v) {
- Intent intent = new Intent(IntentDemo.
this, Other.class);- // 在Intent中傳遞資料
- intent.putExtra("name", "AHuier");
- intent.putExtra("age", 22);
- intent.putExtra("address", "XiaMen");
- // 啟動Intent
- startActivity(intent);
- }
- });
- }
- privatevoid initComponent() {
- button = (Button) findViewById(R.id.button);
- }
- }
other.java
- package com.android.intentdemo;
- import android.app.Activity;
- import android.content.Intent;
- import android.os.Bundle;
- import android.widget.TextView;
- publicclass Other extends Activity {
- private TextView textView;
- @Override
- protectedvoid onCreate(Bundle savedInstanceState) {
- // TODO Auto-generated method stub
- super.onCreate(savedInstanceState);
- setContentView(R.layout.other);
- initComponent();
- Intent intent = getIntent();
- int age = intent.getIntExtra("age", 0);
- String name = intent.getStringExtra("name");
- String address = intent.getStringExtra("address");
- textView.setText("My age is " + age + "\n" + "My name is " + name + "\n" + "My address "
- + address);
- }
- privatevoid initComponent() {
- textView = (TextView) findViewById(R.id.msg);
- }
- }
——>
2. 在Activity之間使用靜態變數傳遞資料
在上例中使用Intent可以很方便的在不同的Activity之間傳遞資料,這個也是官方推薦的方式,但是也有一定的侷限性,就是Intent無法傳遞不能序列化的物件。我們可以使用靜態變數來解決這個問題。
需求1:從一個Activity(IntentDemo)跳轉到另外一個Activity(Other),其中利用靜態變數來傳遞資料
程式Demo:
IntentDemo.java
- Intent intent = new Intent();
- intent.setClass(IntentDemo.this, Other.class);
- Other.age = 22;
- Other.name = "AHuier";
- Other.address = "XiaMen";
- startActivity(intent);
Other.java——>
- private TextView textView;
- publicstaticint age;
- publicstatic String name;
- publicstatic String address;
- @Override
- protectedvoid onCreate(Bundle savedInstanceState) {
- // TODO Auto-generated method stub
- super.onCreate(savedInstanceState);
- setContentView(R.layout.other);
- initComponent();
- textView.setText("My age is " + age + "\n" + "My name is " + name + "\n" + "My address "
- + address);
- }
3. 通剪下板傳遞資料
在Activity之間資料傳遞還可以利用一些技巧,不管是Windows還是Linux作業系統,都會支援一種剪下板的技術,也就是一個程式將一些資料複製到剪下板上,然後其他的任何程式都可以從剪下板中獲取資料。
1) 利用剪下板傳遞普通的資料,如字串
需求1:從一個Activity(IntentDemo)跳轉到另外一個Activity(Other),通過剪下板傳遞資料
程式Demo:
IntentDemo.java
Other.java
- ClipboardManager clipboardManager = (ClipboardManager) getSystemService(Context.CLIPBOARD_SERVICE);
- String name = "AHuier";
- clipboardManager.setText(name);
- Intent intent = new Intent(IntentDemo.this, Other.class);
- startActivity(intent);
- ClipboardManager clipboardManager = (ClipboardManager) getSystemService(Context.CLIPBOARD_SERVICE);
- String msgString = clipboardManager.getText().toString();
- textView.setText(msgString);
——>
1) 利用剪下板傳遞複雜的資料,如物件
需求1:從一個Activity(IntentDemo)跳轉到另外一個Activity(Other),通過剪下板傳遞資料
新建一個MyData.java
- package com.android.intentdemo;
- import java.io.Serializable;
- publicclass MyData implements Serializable {
- private String name;
- privateint age;
- public MyData(String name, int age) {
- super();
- this.name = name;
相關推薦
【Android 開發】 : Activity之間傳遞資料的幾種方式
在Android開發中,我們通常需要在不同的Activity之間傳遞資料,下面我們就來總結一下在Activity之間資料傳遞的幾種方式。 1. 使用Intent來傳遞資料 Intent表示意圖,很多時候我們都會利用Android的Intent來在各個A
Android 兩個Activity之間傳遞資料及返回
從Activity1帶引數跳轉到Activity2這個經常用到,比較熟悉,但如何從Activity2將資料返回給Activity1呢?這個其實也不麻煩,動手敲一下就知道了。 Activity1程式碼:public class MainActivity extends A
【Android 開發】: Android客戶端與服務端之間使用JSON互動資料。
在前面的兩講中,我們講解了JSON資料格式的一些基本知識,以及做一些小Demo,這一講我們在前面的基礎上來做一個綜合的可擴充套件的Demo,主要是針對Android客戶端解析服務端傳遞過來的JSON資料。整個Demo所作的操作如下圖所示 1. 服務端 服務端
【Android 開發】: Android客戶端與服務端之間使用GSON互動資料。
前面我們有提到google的Gson技術的介紹[GSON 資料格式詳解],這一講我們來詳細學習一下Android客戶端與服務端之間使用GSON進行JSON資料的解析,關於GSON的技術我們已經在前面兩講中提到過,對GSON不瞭解的讀者可以先去看前面兩講的博文,這一講
關於Android Activity之間傳遞資料的6種方式
使用Inten的putExtra傳遞 第一個Activity中 ? 1 2 3 4 5 6 //建立意圖物件 Intent intent = new Intent(this,TwoActivity.class); //設定傳
【Android開發】Android 刪除指定檔案和資料夾
/** * 刪除單個檔案 * @param filePath 被刪除檔案的檔名 * @return 檔案刪除成功返回true,否則返回false */ public boolean deleteFile(String filePath) {
Android Intent傳值(兩個Activity之間傳遞資料)
在兩個Activity之間傳遞資料,最終都是通過Intent傳遞,但設定資料和儲存資料方式有兩種(使用Intent 和 Bundle),分別對應如下: 設定資料(MainActivity.java) 方法一:1.直接用intent.putExtra(“name”,“張三”)
Android中不同Activity之間的資料傳遞
需要用到的類及方法: 類似:兩個國家做貿易,交易貨物; --傳遞載體:intent(貨船) --需要傳遞的內容:用bundle(集裝箱)包裝的string(某控制元件的值)<bundle是以鍵值
Android 學習之路一:Activity之間傳遞資料的四種方式
傳遞資料 新建 Activity 在專案中右鍵,選擇 New,繼續選擇中下方的 Activity,最後是 Blank Activity。 此時 Android Studio 會為我們自動新增一個對應的佈局檔案,為佈局檔案中的 TextView 新增 I
【android開發】實現語音資料實時採集/播放
今天無意中看到一篇關於android實現語音資料實時採集/播放的文章,感覺寫得非常棒,挺全面的,所以特地轉載了,還有其實還可以根據這篇部落格內容考慮下視訊資料實時採集、播放的實現。部落格原文地址http://blog.csdn.net/lantingshuxu/article/details/5352031
Android基礎 -- Activity之間傳遞資料(bitmap和map物件)
這邊文章很古老了,看到還有朋友回覆,這裡更新幾點,避免誤導大家。 第一,傳遞HashMap物件 HashMap本身已經實現了Cloneable, Serializable,Intent傳遞時,直接強轉就可以了。(感謝@qcks指正) Map<String, St
【android開發】手勢滑動關閉Activity(隨手指消失)的輔助類的實現
【CSDN抽風,把我寫一個多小時的東西覆蓋了。真的是嗶了狗了,自己又沒有備份。。。重寫吧。。。】 這個類主要是實現向右滑動關閉Activity,效果如下: 老套路,先寫思路: 1)將Activity的背景設定為透明模式。(從而可以看到下一層Activi
【Android開發】之Fragment與Acitvity通信
對象 p s ets roi mit blog () open findview 上一篇我們講到與Fragment有關的經常使用函數,既然Fragment被稱為是“小Activity”。如今我們來講一下Fragment怎樣與Acitivity通信。
【Android開發】找樂,一個笑話App的制作過程記錄
override pbo rdm data root 恰恰 功能 sql htm 緣起 想做一個笑話App的原因是由於在知乎上看過一個帖子。做Android能夠有哪些數據能夠練手,裏面推薦了幾個數據開放平臺。在這些平臺中無一不是有公共的笑話接口,當時心
Activity之間傳遞資料的方式及常見問題總結
Activity之間傳遞資料一般通過以下幾種方式實現: 通過intent傳遞資料 通過Application 使用單例 靜態成員變數。(可以考慮 WeakReferences) 持久化(sqlite、share preference、file等)
【Android開發】:在任意目錄執行NDK編譯
本文以簡單的例子講述如何在任意目錄把自己寫的C程式碼使用NDK提供的交叉編譯該工具來編譯成Android可使用的靜態庫/動態庫。 1. 準備環境 首先,你得安裝了Android的NDK編譯工具,假設你的NDK的根目錄在 /opt/android/ndk . 當然
【Android開發】安卓炫酷效果集合
1. android-ripple-background 能產生波浪效果的背景圖片控制元件,可以自定義顏色,波浪擴充套件的速度,波浪的圈數。 github地址 2. android-shapeLoadingView-master 高仿新版58 載入動畫 github地址 3. Arr
【Android開發】URL[] 轉成 bitmap[]
public static Bitmap[] getBitmapFromURL(String[] path) throws MalformedURLException { Bitmap[] b = new Bitmap[path.length]; for (int i =
【Android開發】View 轉 Bitmap
public static Bitmap loadBitmapFromView(View v) { int w = v.getWidth(); int h = v.getHeight(); Bitmap bmp = Bitmap.createBitmap(w,
【Android開發】Bitmap的質量壓縮法
public static Bitmap compressImage(Bitmap image) { ByteArrayOutputStream baos = new ByteArrayOutputStream(); //質量壓縮方法,這裡100表示不壓縮,把壓縮後的資料存放到