Передача 2D-массива в другое действие
Как передать 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 ответов
Вы можете использовать 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);
Это, наконец, хорошо работает для меня:
Чтобы начать новое действие (отправка 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];
}
}
Вы можете определить собственный класс, который реализует Parcelable
и содержит логику для чтения и записи 2-мерного массива из / в Parcel. Затем поместите этот подлежащий продаже объект внутри Bundle
для перевозки.
Установить 2darray как публичную статическую пустоту. пусть current_class будет классом, в котором мы создаем наш 2d массив. Мы хотим передать данные в 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 - это класс, в котором он был первоначально определен.
Одним из решений является то, что вы можете установить его как статический, чтобы вы могли использовать его в любой своей деятельности.
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);
}
Надеюсь, это поможет вам.