激情久久久_欧美视频区_成人av免费_不卡视频一二三区_欧美精品在欧美一区二区少妇_欧美一区二区三区的

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|JAVA教程|ASP教程|

服務器之家 - 編程語言 - JAVA教程 - Android中Parcelable的作用實例解析

Android中Parcelable的作用實例解析

2019-11-26 15:07shichen2014 JAVA教程

這篇文章主要介紹了Android中Parcelable的作用,對于Android初學者有一定的參考學習價值,需要的朋友可以參考下

在android提供了一種類型:Parcel。被用作封裝數據的容器,封裝后的數據可以通過Intent或IPC傳遞。 除了基本類型以外,只有實現了Parcelable接口的類才能被放入Parcel中。
 
Parcelable實現要點:需要實現三個東西

1)writeToParcel 方法。該方法將類的數據寫入外部提供的Parcel中.聲明如下:
writeToParcel (Parcel dest, int flags) 具體參數含義見javadoc

2)describeContents方法。沒搞懂有什么用,反正直接返回0也可以

3)靜態的Parcelable.Creator接口。本接口有兩個方法:

createFromParcel(Parcel in) 實現從in中創建出類的實例的功能

newArray(int size) 創建一個類型為T,長度為size的數組,僅一句話(return new T[size])即可。估計本方法是供外部類反序列化本類數組使用。

測試用的接收信息Activity:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
import android.app.Activity; 
 
import android.content.Intent; 
 
import android.os.Bundle; 
import android.os.Parcelable; 
 
public class Test extends Activity { 
   
  @Override
  public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.main); 
    Intent i = getIntent(); 
    Person p = i.getParcelableExtra("yes"); 
    System.out.println("---->"+p.name); 
    System.out.println("---->"+p.map.size()); 
  
}

發送的Activity:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
import java.util.HashMap; 
 
import android.app.Activity; 
import android.content.Intent; 
import android.os.Bundle; 
 
public class TestNew extends Activity { 
   
  @Override
  public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.main); 
    Intent intent = new Intent(); 
    Person p = new Person(); 
    p.map = new HashMap<String,String>(); 
    p.map.put("yes", "ido"); 
    p.name="ok"
    intent.putExtra("yes", p); 
    intent.setClass(this, Test.class); 
    startActivity(intent); 
  
}

Parcelable的實現類:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
import java.util.HashMap; 
import android.os.Parcel; 
import android.os.Parcelable; 
 
public class Person implements Parcelable { 
 
  public HashMap<String,String> map = new HashMap<String,String> (); 
    
  public String name ; 
  @Override
  public int describeContents() { 
    return 0
  
  @Override
  public void writeToParcel(Parcel dest, int flags) { 
 
    dest.writeMap(map); 
    dest.writeString(name); 
  
  public static final Parcelable.Creator<Person> CREATOR = new Parcelable.Creator<Person>() { 
//重寫Creator
 
    @Override
    public Person createFromParcel(Parcel source) { 
      Person p = new Person(); 
      p.map=source.readHashMap(HashMap.class.getClassLoader()); 
      p.name=source.readString(); 
      return p; 
    
    @Override
    public Person[] newArray(int size) { 
      // TODO Auto-generated method stub 
      return null
    
  }; 
 
}

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 韩日黄色片 | 亚洲成人国产综合 | 在线播放免费视频 | 国产一区二区在线免费播放 | 久久国产中文字幕 | 久久久久亚洲美女啪啪 | 鲁丝一区二区二区四区 | 福利在线小视频 | 免费一级特黄毛片 | 黄网站免费在线看 | 1级黄色毛片 | 欧美性生活视频免费 | 国产99页 | 91在线色视频 | 日本欧美一区二区三区在线播 | 九九黄色 | 91成人亚洲| 精品国产一区二区三区四区阿崩 | 越南一级黄色片 | 水卜樱一区二区av | 成年人黄视频 | av免费在线不卡 | av中文在线观看 | 国产一区二区二 | 毛片大全在线观看 | 久久国产精品区 | 一级欧美日韩 | 九色中文字幕 | 精品一区二区三区免费爱 | www国产成人免费观看视频 | 欧美18—19sex性hd按摩 | 草久影院 | 蜜桃免费在线 | 欧美1区2区在线观看 | 一级免费看片 | 国产电影av在线 | 欧美一级毛片一级毛片 | 久久免费视频3 | 欧美一级精品片在线看 | 欧美精品一区二区三区在线播放 | 国产精品久久国产精麻豆96堂 |