Activity的傳值的幾種方式
開發過程中頁面和頁面之間傳遞資料示最長遇到的。下面我們來研究下activity之間傳遞資料的幾種方式.
1、通過application實現傳遞資料
2、activity之間的回傳值(startActivityForResult())
3、用intent進行傳值
一、通過application實現傳遞資料
BaseApplication中
public class BaseApplication extends Application{
private static final String tag="BaseApplication";
private static BaseApplication mInstance;
public List<String> pathlist = new
ArrayList<String>();
@Override
public void onCreate() {
LogUtil.i(tag, "----------onCreate:");
super.onCreate();
mInstance = this;
//initCrashHandle();
}
public
static BaseApplication getInstance() {
return mInstance;
}
}
放值進BaseApplication:
private ArrayList<ImageItem> dataList;
BaseApplication application = BaseApplication.getInstance();
application.dataList = dataList;
從BaseApplication中取值:
private ArrayList<ImageItem> dataList;
BaseApplication application = BaseApplication.getInstance();
dataList = application.dataList;
二、使用startActivityForResult()進行回傳值
跳轉的時候用
Intent intentC = new Intent(this, BActivity.class);
/**
* 跳轉目標Activity,並獲取返回值
* 第一個引數:意圖物件,包含所需要跳轉的Activity
* 第二個引數:請求值
*/
startActivityForResult(intentC, REQUEST_CODE_TO_C);
BActivity中適當的時候設定setResult()
Intent resultIntent = new Intent();
resultIntent.putExtra("resutlt", result);
//第一個引數示返回碼,第二個引數示intent
setResult(1, resultIntent);
原activity中取資料/做相應的操作
/**
* 在此方法中接受目標Activity返回的值,並進行相應的處理
* 第一個引數:請求碼
* 第二個引數:結果碼
* 第三個引數:目標Activity返回的Intent物件
*/
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
android.util.Log.e("MainActivity", "onActivityResult");
if (requestCode == REQUEST_CODE_TO_B) {
if (resultCode == 1) {
String content = data.getStringExtra("message");
TextView textView = (TextView) findViewById(R.id.text_Main);
textView.setText("content is : " + content);
} else if(resultCode == -1){
TextView textView = (TextView) findViewById(R.id.text_Main);
textView.setText("content is : " + " 有可能你的請求引數有錯誤");
}
} else if(requestCode == REQUEST_CODE_TO_C){
if(resultCode == -1){
TextView textView = (TextView) findViewById(R.id.text_Main);
textView.setText("content is : " + "引數有問題");
} else if (resultCode == 1){
String content = data.getStringExtra("msg");
TextView textView = (TextView) findViewById(R.id.text_Main);
textView.setText("content is : " + content);
}
}
}
三、用intent進行傳值
intent可以傳遞5中基本資料型別、Bundle型別、Serialiable物件、Parcrlable物件
intent傳遞Serialiable物件:
Intent intentD = new Intent(this, DActivity.class);
Bundle bun = new Bundle();
Person p = new Person("jack", 20);
bun.putSerializable(PERSON, p);
intentD.putExtras(bun);
startActivity(intentD);
接收Serialiable物件:
Person p = (Person) getIntent().getExtras().getSerializable(MainActivity.PERSON);
String name = p.name;
int age = p.age;
注:Person類及其中的子類必須實現Serialiable介面,
import java.io.Serializable;
public class Person implements Serializable{
public String name = "";
public int age = 0;
public Person(String name, int age){
this.name = name;
this.age = age;
}
}
Intent傳遞Parcelable物件
Parcelable序列化了的POJO類:
- /**
- *
- */
- package com.aaron.util;
- import android.os.Parcel;
- import android.os.Parcelable;
- /**
- * @author aaron
- *
- */
- publicclass Model implements Parcelable {
- privateint month;
- privatefloat total;
- private String store;
- /**
- * @return the month
- */
- publicint getMonth() {
- return month;
- }
- /**
- * @param month
- * the month to set
- */
- publicvoid setMonth(int month) {
- this.month = month;
- }
- /**
- * @return the total
- */
- publicfloat getTotal() {
- return total;
- }
- /**
- * @param total
- * the total to set
- */
- publicvoid setTotal(float total) {
- this.total = total;
- }
- /**
- * @return the store
- */
- public String getStore() {
- return store;
- }
- /**
- * @param store
- * the store to set
- */
- publicvoid setStore(String store) {
- this.store = store;
- }
- @Override
- publicint describeContents() {
- // TODO Auto-generated method stub
- return0;
- }
- @Override
- publicvoid writeToParcel(Parcel dest, int flags) {
- // TODO Auto-generated method stub
- dest.writeInt(month);
- dest.writeString(store);
- dest.writeFloat(total);
- }
- publicstaticfinal Parcelable.Creator<Model> CREATOR = new Parcelable.Creator<Model>() {
- @Override
- public Model createFromParcel(Parcel source) {
- // TODO Auto-generated method stub
- Model model = new Model();
- model.month = source.readInt();
- model.store = source.readString();
- model.total = source.readFloat();
- return model;
- }
- @Override
- public Model[] newArray(int size) {
- // TODO Auto-generated method stub
- returnnew Model[size];
- }
- };
- }
Parcelable序列化Parcelable序列化需要注意的是,需要過載describeContents()、writeToParcel(Parcel dest, int flags)、Parcelable.Creator<Model> CREATOR = new Parcelable.Creator<Model>()這三個方法。
Parcelable資料傳遞程式碼:
- //Parcelable實現序列化傳送資料
- Intent intent = new Intent();
- intent.putParcelableArrayListExtra("Model", (ArrayList<? extends Parcelable>) list);
- intent.setClass(NetClientDemoActivity.this, HelloAchartengineActivity.class);
Parcelable接收資料程式碼:
- //通過Parcelable反序列化獲取資料
- Intent intent = getIntent();
- List<Model> list = intent.getParcelableArrayListExtra("Model");
- String[] titles = new String[]{list.get(0).getStore()};
相關推薦
swift詳解之二十二-----------UINavigationController的基本用法和頁面傳值幾種方式
UINavigationController的基本用法和頁面傳值幾種方式 本文介紹UINavigationController基本用法,因為涉及多頁面順便介紹頁面傳值 1、手寫程式碼建立UINavigationController 手寫方式建立很簡
Android activity間通訊幾種方式
read flag 進程 destroy ads sage on() sting ogl Activity 通訊 Bundle 我們可以通過將數據封裝在Bundle對象中 ,然後在Intent跳轉的時候攜帶Bundle對象 bundle 本質上是使用 arrayMap實現
檔案上傳的幾種方式
一、springmvc中的檔案上傳 1.配置檔案 (1).pom檔案,檔案上傳主要需要如下幾個jar包 <dependency> <groupId>org.springframework</groupId>
web 檔案上傳的幾種方式
問題 檔案上傳在WEB開發中應用很廣泛。 檔案上傳是指將本地圖片、視訊、音訊等檔案上傳到伺服器上,可以供其他使用者瀏覽或下載的過程。 以下總結了常見的檔案(圖片)上傳的方式和要點處理。 表單上傳 這是傳統的form表單上傳,使用form表單的input[type=”file”]控制元
Activity退出的幾種方式
在android中使用:[activityname].this.finish(); 只是退出了activity的堆疊中,要真正的退出程式在手機cpu中的執行,當應用不再使用時,通常需要關閉應用,可以使用以下三種方法關閉android應用: 一 使用kil
頁面傳值得幾種方式
一、 使用QueryString變數 QueryString是一種非常簡單也是使用比較多的一種傳值方式,但是它將傳遞的值顯示在瀏覽器的位址列中,如果是傳遞一個或多個安全性要求不高或是結構簡單的數值時,可以使用這個方法。 Response.Redirect( "target.a
Activity傳值的幾種方式
獲取值 類名 star out override *** 演示 rac 技術分享 ***Activity的傳值 *第一種:Intent傳值 主xml文件中設置按鈕,點擊跳轉: <Button android:layout_width="wrap_conten
Activity 之間傳值的幾種方式
二、通過startActivityForResult方法來得到Activity的回傳值 在一些情況下,我們通過 A activity跳轉到 B activity上,這時希望 A activtiy能從 B activity上得到一些返回值,這個時候我們就不能使用startActivity方法了,而是使用 st
Activity的傳值的幾種方式
開發過程中頁面和頁面之間傳遞資料示最長遇到的。下面我們來研究下activity之間傳遞資料的幾種方式. 1、通過application實現傳遞資料 2、activity之間的回傳值(startActivityForResult()) 3、用intent進行傳值 一、通過ap
ASP.Net中頁面傳值的幾種方式
webconfig local 區別 重啟 Nid 傳遞對象 app too BE 大致概括一下,ASP.NET 頁面之間傳遞值得方式大致可以分為如下幾種:Request.QueryString["name"],Request.Form("name"),Session,Co
小程序頁面傳值的幾種方式
get 頁面傳值 targe eve url傳值 () pre itl 存取 1. url傳值 list.wxml: <view class="playIcon"> <image src="../../iconfont/play_ini
【springmvc】傳值的幾種方式&&postman接口測試
red ews 參數 一點 名稱 each comment PQ 分享圖片 最近在用postman測試postman接口,對於springmvc傳值這一塊,測試了幾種常用方式,總結一下。對於postman這個工具的使用也增加了了解。p
react之傳遞資料的幾種方式props傳值、路由傳值、狀態提升、redux、context
react之傳遞資料的幾種方式 1、父子傳值 父傳值:<子的標籤 value={'aaa'} index={'bbb'}></子的標籤> 子接值:<li key={this.props.index}>{this.props.value}</li>
微信小程序傳值的幾種方式
存儲 全局 定義 tar ase 點擊 url 方式 this 第一種:通過鏈接傳值(跳轉頁面傳值) index.wxml <view>{{ msg }}</view> <button bindtap="clickMe">點擊我<
前端ajax非同步傳值以及後端接收引數的幾種方式
原文參考 非同步傳值 前臺往後臺傳值呢,有很多種方式,大家聽我細細道來。 第一種呢,也是最簡單的一種,通過get提交方式,將引數在連結中以問號的形式進行傳遞。 // 前臺傳值方法 // 觸發該方法呼叫ajax function testAjax(yourData) {
SpringMVC作用域傳值的幾種方式
index.jsp頁面: request:${requestScope.req}<br/> session:${sessionScope.session }<br/> sessionParam:${sessionScope.sessionParam
vue中頁面跳轉傳值的幾種方式
一、router-link URL路徑:http://localhost:8081/#/test?userid=1 <router-link :to="{path:'/test',query: {userid: id}}">跳轉</router
前端ajax異步傳值以及後端接收參數的幾種方式
ping 回調 button 進行 到你 del 後臺 log 註意 原文參考 異步傳值 前臺往後臺傳值呢,有很多種方式,大家聽我細細道來。 第一種呢,也是最簡單的一種,通過get提交方式,將參數在鏈接中以問號的形式進行傳遞。 // 前臺傳值方法 // 觸發該方法調
SpringMvc前後端傳值的幾種方式
從JSP頁面傳遞值到controller層的方式 直接將請求引數名作為controller中方法的形參 使用@RequestParam 繫結請求引數值(推薦使用) 用註解@RequestMapping接收引數的方法 使用POJO
.NET頁面之間傳值的幾種方式總結
1、 QueryString 當頁面上的form以get方式向頁面傳送請求資料時,web server將請求資料放入一名為QEURY_STRING的環境變數中,QeueryString方法從這個變數中取出相應的值。 先建立兩個WebForm,分別為WebForm1和We