編輯:關於Android編程
如果自定義的類型需要通過Intent或IPC進行傳遞,就需要對數據進行序列化處理。
下面是Android官網上的一個例子
public class MyParcelable implements Parcelable {
private int mData;
public int describeContents() {
return 0;
}
public void writeToParcel(Parcel out, int flags) {
out.writeInt(mData);
}
public static final Parcelable.Creator CREATOR
= new Parcelable.Creator() {
public MyParcelable createFromParcel(Parcel in) {
return new MyParcelable(in);
}
public MyParcelable[] newArray(int size) {
return new MyParcelable[size];
}
};
private MyParcelable(Parcel in) {
mData = in.readInt();
}
}
從以下例子可以看到一個基本類要實現序列化需要實現Parcelable接口,通過Parcel進行存儲。實現Parcelable接口的類必須有一個名為:CREATOR 的靜態字段,這是一個實現Parcelable.Creator接口的對象,這樣一個自定義的類型就可以跟基本數據一樣使用Intent進行傳遞。
使用Intent傳遞MyParcelable
工程目錄

MainActivity.java
package com.example.parcelabledemo;
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
public class MainActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Button btn = (Button) findViewById(R.id.btn);
btn.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
Intent intent = new Intent(MainActivity.this, HandleActivity.class);
MyParcelable myParcelable = new MyParcelable(10);
Bundle bundle = new Bundle();
System.out.println(main + myParcelable.get_data());
bundle.putParcelable(value, myParcelable);
intent.putExtras(bundle);
startActivity(intent);
}
});
}
}
HandleActivity.java
package com.example.parcelabledemo;
import android.app.Activity;
import android.os.Bundle;
import android.widget.Toast;
public class HandleActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(R.layout.handle);
Bundle bundle = getIntent().getExtras();
MyParcelable myParcelable = bundle.getParcelable(value);
System.out.println(myParcelable.toString());
Toast.makeText(this, value = + myParcelable.get_data(),
Toast.LENGTH_LONG).show();
}
}
【Android】ListView、RecyclerView、ScrollView裡嵌套ListView 相對優雅的解決方案:NestFullListView
一 背景概述:ScrollView裡嵌套ListView,一直是Android開發者(反正至少是我們組)最討厭的設計之一,完美打破ListView(RecyclerVie
Android遇上打印機
打印機其實和Android沒有什麼大的關系,和linux內核關聯才是比較強的。最近調試打印機,有那麼一點心得,一點一點記錄下來。 最終的結果是要在Andro
Android--逐幀動畫FrameAnimation
承香墨影Android--逐幀動畫FrameAnimation 前言 開門見山,本篇博客講解一下如何在Android平台下播放一個逐幀動畫。逐幀動
小米手環怎麼連接微信
先請手機上打開小米手環,點擊右上角的“更多”選項圖標,如圖所示 接著請在選項列表中點擊“服務”選項,如圖