Там действительно нет необходимости использовать Bundle здесь, вы можете просто передать в струнных к varargs
, который doInBackground()
занимает.
Вы бы просто назвать его, как это, где json
является JSONObject:
asyn.execute(url, json.toString());
Тогда вы бы doInBackground()
принять Струнный varargs
:
class Asyn extends AsyncTask<String, Void, Void> {
@Override
protected Void doInBackground(String... arg0) {
String url = arg0[0];
String json = arg0[1];
JSONObject obj = new JSONObject(json);
}
}
Если вы действительно хотите использовать Bundle , вы бы назвали это так, как сейчас:
Bundle bundle = new Bundle();
bundle.putString("url", url);
bundle.putString("json",json.toString());
//inte.putExtras(bundle); //not needed
asyn.execute(bundle);
Затем сделайте doInBackground()
принять Bundle varargs
:
class Asyn extends AsyncTask<Bundle, Void, Void> {
@Override
protected Void doInBackground(Bundle... arg0) {
Bundle b = arg0[0];
String url = b.getString("url");
String json = b.getString("json");
JSONObject obj = new JSONObject(json);
}
}
Кроме того, вы не должны пытаться захватить возвращаемое значение из AsyncTask
. Если AsyncTask
является подклассом Activity, тогда вы можете просто установить значение в onPostExecute()
и вызвать метод в прилагаемом к нему действии.
Для других способов сделать это, see this post.
любой ключ об использовании пучка ?? – AkshayKinhikar
Я хочу передать объект json и URL-адрес запроса POST – AkshayKinhikar