如何将二维数组从一个活动传递到另一个活动?

时间:2013-02-28 10:32:40

标签: android android-intent android-activity bundle multidimensional-array

我将 2D字符串数组从一个活动传递到另一个活动时遇到问题 我尝试了一些代码......但是它们显示了一些错误

我的字符串数组是

String[][] commuterDetails=new String[2][5];

commuterDetails=
{
   { "a", "b","c", "d","e" },
   {"f", "g","h", "i","j" }
};

我尝试了一些代码

在第一个活动中

Intent summaryIntent = new Intent(this, Second.class);
Bundle b=new Bundle();
b.putSerializable("Array", commuterDetails);
summaryIntent.putExtras(b);
startActivity(summaryIntent);

在第二项活动中

Bundle b = getIntent().getExtras();
String[][] list_array = (String[][])b.getSerializable("Array");

但显示错误

Caused by: java.lang.ClassCastException: [Ljava.lang.Object;

我是android的新手,请帮帮我

2 个答案:

答案 0 :(得分:1)

您可以定义一个实现Parcelable的自定义类,并包含从/向Parcel读取和写入二维数组的逻辑。然后,将该可分配对象放入Bundle内进行运输。

<强>更新

public class MyParcelable implements Parcelable{

public String[][] strings;

public String[][] getStrings() {
    return strings;
}

public void setStrings(String[][] strings) {
    this.strings = strings;
}

public MyParcelable() {
    strings = new String[1][1];
}

public MyParcelable(Parcel in) {
    strings = (String[][]) in.readSerializable();
}

@Override
public int describeContents() {
    return 0;
}

@Override
public void writeToParcel(Parcel dest, int flags) {
    dest.writeSerializable(strings);

}
public static final Parcelable.Creator<MyParcelable> CREATOR = new Parcelable.Creator<MyParcelable>() {

    @Override
    public MyParcelable createFromParcel(Parcel in) {
        return new MyParcelable(in);
    }

    @Override
    public MyParcelable[] newArray(int size) {
        return new MyParcelable[size];
    }
};
}

答案 1 :(得分:0)

让你的commuterDetails 静态并在其他活动中访问

FirstActivity.commuterDetails[][]