将2D数组传递给另一个Activity

时间:2012-08-31 11:54:07

标签: android multidimensional-array parcelable

如何将2个宗派数组对象作为参数传递给另一个活动

如何在另一个活动中获取二维数组字符串值

   String [][]str;

    Intent l = new Intent(context,AgAppMenu.class);
                 l.putExtra("msg",str);
                 l.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);   
                 context.startActivity(l);



  another Activity class

   String[][] xmlRespone2;

    xmlRespone2 = getIntent().getExtras().getString("msg");

5 个答案:

答案 0 :(得分:12)

您可以使用putSerializable.数组是可序列化的。

存储:

bundle.putSerializable("list", selected_list); //这里的bundle是Bundle对象。

访问:

String[][] passedString_list = (String[][]) bundle.getSerializable("list");

实施例

Intent mIntent = new Intent(this, Example.class);
Bundle mBundle = new Bundle();
mBundle.putSerializable("list", selected_list);
mIntent.putExtras(mBundle);

答案 1 :(得分:6)

这对我来说效果很好:

开始新活动(发送String [] []和String):

String[][] arrayToSend=new String[3][30];
String stringToSend="Hello";
Intent i = new Intent(this, NewActivity.class);

i.putExtra("key_string",stringToSend);

Bundle mBundle = new Bundle();
mBundle.putSerializable("key_array_array",  arrayToSend);
i.putExtras(mBundle);

startActivity(i);

要在NewActivity.onCreate中访问:

String sReceived=getIntent().getExtras().getString("key_string");

String[][] arrayReceived=null;
Object[] objectArray = (Object[]) getIntent().getExtras().getSerializable("key_array_array");
if(objectArray!=null){
    arrayReceived = new String[objectArray.length][];
    for(int i=0;i<objectArray.length;i++){
        arrayReceived[i]=(String[]) objectArray[i];
    }
}

答案 2 :(得分:2)

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

答案 3 :(得分:0)

将2darray设置为public static void。 让current_class成为我们创建二维数组的类 我们想将数据传递给NewActivity

Class<?> ourClass=Class.forName("com.example.testapp.NewActivity");
Intent ourIntent= new Intent(current_class.this,ourClass);
intent_name.putExtra("name", 2darray_name);
startActivity(ourIntent);`

要在NewActivity中访问它,请使用current_class.2darray_name,其中current_class是最初定义它的类。

答案 4 :(得分:-1)

一个解决方案是您可以将其设置为静态,以便您可以在任何活动中使用它。

Class A{
 public static String [][]str;
...
    Intent l = new Intent(context,AgAppMenu.class);
                 l.putExtra("msg",str);
                 l.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);   
                 context.startActivity(l);


}

Class B{

...
you can use it with Just A.(ArrayName)
System.out.println(A.str);

}

希望它会帮助你。