欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Android中使用Intent在Activity之間傳遞對象(使用Serializable或者Parcelable)的方法

 更新時間:2016年01月20日 11:46:13   作者:cjjky  
這篇文章主要介紹了 Android中使用Intent在Activity之間傳遞對象(使用Serializable或者Parcelable)的方法的相關(guān)資料,需要的朋友可以參考下

 Android中的不同Activity之間傳遞對象,我們可以考慮采用Bundle.putSerializable(Key,Object);也可以考慮采用Bundle.putParcelable(Key, Object);其中前面一種方法中的Object要實現(xiàn)Serializable接口,后面一種方法中的Object要實現(xiàn)Parcelable接口。下面我們以一個完整的例子來說明。

1.新建一個Android的工程,其中該工程的目錄結(jié)構(gòu)如下圖:

2. 修改main.xml布局文件。布局文件的源碼如下:

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
android:orientation="vertical" 
android:layout_width="fill_parent" 
android:layout_height="fill_parent" 
> 
<TextView 
android:layout_width="fill_parent" 
android:layout_height="wrap_content" 
android:text="@string/hello" 
/> 
<Button 
android:id="@+id/serButton" 
android:layout_width="fill_parent" 
android:layout_height="wrap_content" 
android:text="Serializable"/> 
<Button 
android:id="@+id/parButton" 
android:layout_width="fill_parent" 
android:layout_height="wrap_content" 
android:text="Parcelable"/> 
</LinearLayout> 

3.在工程的src目錄下新建一個實體類包,命名為com.andy.entity.同時在該package中添加兩個實體類,一個是Person.java,該類實現(xiàn)Serializable接口;一個是Police.java,該類實現(xiàn)Parcelable接口。代碼分別如下:

Person.java:
package com.andy.entity; 
import java.io.Serializable; 
public class Person implements Serializable { 
private static final long serialVersionUID = -6919461967497580385L; 
private String name; 
private int age; 
public String getName() { 
return name; 
} 
public void setName(String name) { 
this.name = name; 
} 
public int getAge() { 
return age; 
} 
public void setAge(int age) { 
this.age = age; 
} 
} 
Police.java:
[c-sharp] view plain copy
package com.andy.entity; 
import android.os.Parcel; 
import android.os.Parcelable; 
public class Police implements Parcelable { 
private String name; 
private int workTime; 
public String getName() { 
return name; 
} 
public void setName(String name) { 
this.name = name; 
} 
public int getWorkTime() { 
return workTime; 
} 
public void setWorkTime(int workTime) { 
this.workTime = workTime; 
} 
public static final Parcelable.Creator<Police> CREATOR = new Creator<Police>() { 
@Override 
public Police createFromParcel(Parcel source) { 
Police police = new Police(); 
police.name = source.readString(); 
police.workTime = source.readInt(); 
return police; 
} 
@Override 
public Police[] newArray(int size) { 
return new Police[size]; 
} 
}; 
@Override 
public int describeContents() { 
return 0; 
} 
@Override 
public void writeToParcel(Parcel parcel, int flags) { 
parcel.writeString(name); 
parcel.writeInt(workTime); 
} 
}

4.在包com.andy.testdemo中修改TestActivity.java類,同時在該包中添加類SerializableDemo和ParcelableDemo,分別繼承了Activity類和分別顯示Person對象和Police對象的數(shù)據(jù)。代碼如下:

package com.andy.testdemo; 
import com.andy.entity.Person; 
import com.andy.entity.Police; 
import android.app.Activity; 
import android.content.Intent; 
import android.os.Bundle; 
import android.view.View; 
import android.widget.Button; 
public class TestActivity extends Activity { 
private Button sButton,pButton; 
public final static String SER_KEY = "com.andy.ser"; 
public final static String PAR_KEY = "com.andy.par"; 
/** Called when the activity is first created. */ 
@Override 
public void onCreate(Bundle savedInstanceState) { 
super.onCreate(savedInstanceState); 
setContentView(R.layout.main); 
sButton = (Button)findViewById(R.id.serButton); 
sButton.setOnClickListener(new View.OnClickListener() { 
@Override 
public void onClick(View v) { 
SerializeMethod(); 
} 
}); 
pButton = (Button)findViewById(R.id.parButton); 
pButton.setOnClickListener(new View.OnClickListener() { 
@Override 
public void onClick(View v) { 
PacelableMethod(); 
} 
}); 
} 
/** 
* Serializeable傳遞對象的方法 
*/ 
private void SerializeMethod(){ 
Person mPerson = new Person(); 
mPerson.setName("andy"); 
mPerson.setAge(26); 
Intent mIntent = new Intent(this,SerializableDemo.class); 
Bundle mBundle = new Bundle(); 
mBundle.putSerializable(SER_KEY,mPerson); 
mIntent.putExtras(mBundle); 
startActivity(mIntent); 
} 
/** 
* Pacelable傳遞對象方法 
*/ 
private void PacelableMethod(){ 
Police mPolice = new Police(); 
mPolice.setName("I am Police"); 
mPolice.setWorkTime(2008); 
Intent mIntent = new Intent(this,ParcelableDemo.class); 
Bundle mBundle = new Bundle(); 
mBundle.putParcelable(PAR_KEY, mPolice); 
mIntent.putExtras(mBundle); 
startActivity(mIntent); 
} 
}

SerializableDemo.java類

package com.andy.testdemo; 
import com.andy.entity.Person; 
import android.app.Activity; 
import android.os.Bundle; 
import android.widget.TextView; 
public class SerializableDemo extends Activity { 
@Override 
public void onCreate(Bundle savedInstanceState) { 
super.onCreate(savedInstanceState); 
TextView mTextView = new TextView(this); 
Person mPerson = (Person)getIntent().getSerializableExtra(TestActivity.SER_KEY); 
mTextView.setText("You name is: " + mPerson.getName() + "/n"+ 
"You age is: " + mPerson.getAge()); 
setContentView(mTextView); 
} 
}

ParcelableDemo.java類:

package com.andy.testdemo; 
import com.andy.entity.Police; 
import android.app.Activity; 
import android.os.Bundle; 
import android.widget.TextView; 
public class ParcelableDemo extends Activity { 
@Override 
public void onCreate(Bundle savedInstanceState) { 
super.onCreate(savedInstanceState); 
TextView mTextView = new TextView(this); 
Police mPolice = (Police)getIntent().getParcelableExtra(TestActivity.PAR_KEY); 
mTextView.setText("Police name is: " + mPolice.getName()+"/n"+ 
"WorkTime is: " + mPolice.getWorkTime() + "/n"); 
setContentView(mTextView); 
} 
} 

5.在AndroidManifest.xml文件中為新添加的兩個Activity進行注冊。

<?xml version="1.0" encoding="utf-8"?> 
<manifest xmlns:android="http://schemas.android.com/apk/res/android" 
package="com.andy.testdemo" 
android:versionCode="1" 
android:versionName="1.0"> 
<application android:icon="@drawable/icon" android:label="@string/app_name"> 
<activity android:name=".TestActivity" 
android:label="@string/app_name"> 
<intent-filter> 
<action android:name="android.intent.action.MAIN" /> 
<category android:name="android.intent.category.LAUNCHER" /> 
</intent-filter> 
</activity> 
<activity android:name=".SerializableDemo"/> 
<activity android:name=".ParcelableDemo"/> 
</application> 
<uses-sdk android:minSdkVersion="8" /> 
</manifest> 

6.運行程序查看效果圖:

【1】主界面截圖:


【2】點擊Serializable按鈕的效果


【3】點擊Parcelable按鈕的效果

=========================================================================
以上是如何采用Intent在不同的Activity之間傳遞對象的例子。

相關(guān)文章

  • Android實現(xiàn)GPS定位代碼實例

    Android實現(xiàn)GPS定位代碼實例

    這篇文章主要介紹了Android實現(xiàn)GPS定位實例,對關(guān)鍵操作部份給出代碼示例并做了一定的注釋,需要的朋友可以參考下
    2014-07-07
  • Android中webView加載H5綁定cookie實例

    Android中webView加載H5綁定cookie實例

    這篇文章主要介紹了Android中webView加載H5綁定cookie實例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-03-03
  • android編程實現(xiàn)對話框的封裝實例

    android編程實現(xiàn)對話框的封裝實例

    這篇文章主要介紹了android編程實現(xiàn)對話框的封裝,以實例形式分析了Android針對對話框的相關(guān)操作技巧,具有一定參考借鑒價值,需要的朋友可以參考下
    2015-11-11
  • kotlin使用建造者模式自定義對話框

    kotlin使用建造者模式自定義對話框

    這篇文章主要為大家詳細介紹了kotlin使用建造者模式自定義對話框的相關(guān)資料,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-07-07
  • Android如何通過手機自動獲取短信驗證碼

    Android如何通過手機自動獲取短信驗證碼

    注冊帳號時,經(jīng)常需要手機獲取驗證碼,Android如何通過手機自動獲取短信驗證碼,下面看看小編給大家分享的一段代碼,感興趣的小伙伴們可以參考一下
    2016-03-03
  • Android使用自定義View實現(xiàn)餅狀圖的實例代碼

    Android使用自定義View實現(xiàn)餅狀圖的實例代碼

    這篇文章主要介紹了Android使用自定義View實現(xiàn)餅狀圖的實例代碼,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-05-05
  • Android實現(xiàn)自定義手勢和識別手勢的功能

    Android實現(xiàn)自定義手勢和識別手勢的功能

    這篇文章主要介紹了Android實現(xiàn)自定義手勢和識別手勢的功能,本文通過實例代碼給大家介紹的非常詳細,具有一定的參考借鑒價值,需要的朋友可以參考下
    2019-10-10
  • 微信Android熱更新Tinker使用詳解(星空武哥)

    微信Android熱更新Tinker使用詳解(星空武哥)

    Tinker是微信官方的Android熱補丁解決方案,它支持動態(tài)下發(fā)代碼、So庫以及資源,讓應(yīng)用能夠在不需要重新安裝的情況下實現(xiàn)更新。當然,你也可以使用Tinker來更新你的插件
    2017-09-09
  • 超實用的android自定義log日志輸出工具類

    超實用的android自定義log日志輸出工具類

    這篇文章主要為大家詳細介紹了一個超實用的android自定義log日志輸出工具類,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2019-01-01
  • Android自定義view實現(xiàn)多色進度條GradientProgressView的繪制

    Android自定義view實現(xiàn)多色進度條GradientProgressView的繪制

    我們常使用shape實現(xiàn)漸變色,但是shape的極限卻只有三色,如果有超過三種顏色的View的要求,那么我們就不得不去自定義View來實現(xiàn)這個需求,所以下面我們就來看看如何自定義view實現(xiàn)多色進度條的繪制吧
    2023-08-08

最新評論