Pass 2D array to another Activity

£可爱£侵袭症+ 提交于 2019-11-27 05:27:38

You can use putSerializable. Arrays are serializable.

To store:

bundle.putSerializable("list", selected_list); // Here bundle is Bundle object.

To access:

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

Example

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

This finally works well for me :

To start a new activity (sending String[][] and 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);

To access in 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];
    }
}

You may define a custom class which implements Parcelable and contains logic to read and write 2-dimensional-array from/to Parcel. Afterwards, put that parcelable object inside Bundle for transportation.

set the 2darray as public static void. let current_class be the class in which we create our 2d array We want to pass the data to 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);`

to access this in NewActivity , use current_class.2darray_name where current_class is the class where it was originally defined.

one Solution is that you can set it as Static so that you can use that in any of your activity.

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

}

Hope it will Help you.

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!