【问题标题】:how to get two dimensional string Array from one Activity to other [closed]如何从一个活动获取二维字符串数组到另一个活动[关闭]
【发布时间】:2011-12-29 15:25:57
【问题描述】:

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

【问题讨论】:

    标签: android android-activity multidimensional-array


    【解决方案1】:

    您可以使用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];
            }
        };
    }
    

    传递给另一个 Activity -

    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
    

    【讨论】:

    • 我得到了异常 "java.lang.ClassCastException: [Ljava.lang.Object;"
    • 抱歉回复晚了,您也可以使用 Androids Parcelable Class 对您的数据进行序列化。
    【解决方案2】:

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

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

    你可以设置成

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

    在另一个活动中

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

    并享受

    【讨论】:

      【解决方案3】:

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

      【讨论】:

        【解决方案4】:

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

        【讨论】:

        • 请给出这两种方式的示例代码
        【解决方案5】:

        您可以逐行进行。不优雅也不高效。但是如果你有一个 i by j 数组,你可以单独发送 i 个长度为 j 的数组,然后在新活动中将它们重新组合在一起。

        假设 i 和 j 非常小。

        【讨论】:

          【解决方案6】:

          您可以使用 putSerializable 来设置 set bytearray 并使用 getSerializable 来检索 看看下面的方法

          创建一个可序列化的类,分配字符串数组并将该可序列化放入意图

          Step-1创建一个Serializable Bean Class,将数组设置为该类

          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();
          

          【讨论】:

            猜你喜欢
            • 2017-02-09
            • 2017-12-30
            • 1970-01-01
            • 1970-01-01
            • 2018-09-24
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多