Передать jsonarray из действия A в действие B?
У меня есть два API вызова Activity A и BI в Activity A, и я получаю ответ в JsonArray. Теперь мне нужно получить весь JsonArray в Деятельности B из Деятельности A. Как я могу это сделать?
4 ответа
Попробуй это,
In Activity A:
Intent intent = new Intent(ActivityA.this, ActivityB.class);
intent.putExtra("jsonArray", jsonArray.toString());
startActivity(intent);
In Activity B:
Intent intent = getIntent();
String jsonArray = intent.getStringExtra("jsonArray");
try {
JSONArray array = new JSONArray(jsonArray);
} catch (JSONException e) {
e.printStackTrace();
}
@mohsinmemon
Преобразуйте JsonArray в String, затем присоедините его к Intent и отправьте.
JSONObject jObject = new JSONObject("Json Response");
Intent obj_intent = new Intent(ActivityA.this, ActivityB.class);
Bundle b = new Bundle();
b.putString("Array",jObject.toString());
obj_intent.putExtras(b);
В ActivityB
Bundle b = getIntent().getExtras();
String Array=b.getString("Array");
Если вы не начинаете второе действие с первого; объявите, что Json как public static, просто передайте это как связку в намерении.
Сначала вы должны преобразовать ваши данные в виде ArrayList в упражнении A, как показано ниже:
ArrayList<YourCustomDataModel> dataArrayList= null;
String jsonInternets = //"Your Json Response"
if (jsonInternets != null && !jsonInternets.isEmpty()) {
Gson gson = new Gson();
YourCustomDataModel[] dataModels= gson.fromJson(jsonInternets,
YourCustomDataModel[].class);
dataArrayList= new ArrayList<YourCustomDataModel>(Arrays.asList(dataModels));
}
после этого шага вы можете поместить Arraylist в свои намерения, как показано ниже:
Intent intent=new Intent(ActivityA.this,ActiviyB.class);
intent.putExtra("data",dataArrayList);
startActivity(intent);
теперь после этих шагов в Деятельности B вы можете получить ваши данные в виде ArrayList, как показано ниже:
if (getIntent().getExtras()!=null&&getIntent().getExtras().getSerializable("data")!=null)
{
ArrayList<YourCustomDataModel> dataArrayList=getIntent().getExtras().getSerializable("data");
}