如何从一个Activity获取二维字符串数组到另一个

时间:2011-12-29 05:37:57

标签: android android-activity multidimensional-array

我是Android新手。请告诉我如何从一个Activity到另一个Activity获取二维字符串数组。  谢谢

6 个答案:

答案 0 :(得分:6)

您可以使用Android Parcelable类传递Serializable数据,例如Arrays。以下是您案例中的示例。

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];
        }
    };
}

传递给另一项活动 -

public String[][] strings = new String[1][1];
strings[0][0] = "data";

MyParcelable myParcelable = new MyParcelable();
myParcelable.setStrings(strings);
intent.putExtra("parcel",myParcelable);
startActivity(intent);

要检索 -

Intent intent = getIntent();
Bundle b = intent.getExtras();
MyParcelable myParcelable = b.getParcelable("parcel");
strings = myParcelable.getStrings();
Log.d("Your String[0][0] is - ",strings[0][0]+"");

输出 -

12-29 12:49:39.016: D/Your String[0][0] is -(1484): data

答案 1 :(得分:4)

我可以给你最简单的答案,为getter和setter创建一个Serializable类,并在你的应用程序的任何地方使用你的数据:

Class ABC implements Serializable
{
   private static final long serialVersionUID = 1L;
   String[][] str;
   private static ABC singletonObject;
    public static ABC getSingletonObject() {
        if (singletonObject == null) {
            singletonObject = new ABC ();
        }
        return singletonObject;
    }
   public void setString(String[][] str)
   {
      this.str = str;
   }
   public String[][] getString()
   {
      return str;
   }
}

Yous可以将其设置为

ABC s = ABC.getSingletonObject();
s.setString(str);

在另一项活动中

ABC s = ABC.getSingletonObject();
String[][] str = s.GetString();

并享受

答案 2 :(得分:1)

最简单的方法是将它包装在一个可序列化的类中并在意图中传递它:)

答案 3 :(得分:0)

你可以一行一行地做。不优雅或高效。但是如果你有一个i by j数组,你可以自己发送长度为j的i数组,然后在新的活动中将它们重新组合在一起。

假设i和j非常小,那就是。

答案 4 :(得分:0)

两种方式。 1)将其保存在可跨活动访问的静态变量中2)将其作为可序列化数据并将其放入捆绑包中。

答案 5 :(得分:0)

您可以使用putSerializable设置set bytearray并使用getSerializable进行检索 看看以下方法

创建一个可序列化的类,分配String数组并将其序列化为intent

Step-1 创建可序列化Bean类以将数组设置为类

public class MyBean implements Serializable{
    String[][] data = null;
    public void set2DArray(String[][] data){
        this.data = data;
    }
    public String[][] get2DArray(){
        return data;
    }
}

来电者活动中的第2步(家庭班级)

Intent intent = new Intent(this, Second.class);

        String data[][] = new String[][] {{"1","pavan"},{"2","kumar"},{"3","kora"},{"1","pavan"},{"2","kumar"},{"3","kora333"}};
        MyBean bean = new MyBean();
        bean.set2DArray(data);
        Bundle b = new Bundle();
        b.putSerializable("mybean", bean);
        i.putExtra("obj", b);
        startActivity(i);

步骤3呼叫活动(第二课)

Bundle b = getIntent().getBundleExtra("obj");
       MyBean dData = (MyBean) b.getSerializable("mybean");
       String[][] str =dData.get2DArray();