将数据传递给 AsyncTask
Passing data to AsynTask
当我以这种方式传递 arg 时,一切正常:
new MerrTeDhenatEDegeve().execute("https://navigator.bkt.com.al/bktnavigator/al/deget/al_ilamre_deget.php");
当我以这种方式传递 arg 时它崩溃了:
sh_d sh_d_instance = new sh_d();
new MerrTeDhenatEDegeve().execute(new String(sh_d_instance.deshifro(url_Deget)));
这是我的异步 class:
class MerrTeDhenatEDegeve extends AsyncTask<String, String, String> {
// Marrja e te dhenave te degeve
protected String doInBackground(String... args) {
// Ketu po krijojme parametrat qe do te na duhet per te krijuar querin ne db
List<NameValuePair> params = new ArrayList<NameValuePair>();
// Ketu po bejme kerkesen per tek serveri dhe presim te marrim pergjigjen e json ne string
JSONObject jsonDega = jParserDega.makeHttpRequest(args[0], "GET", params);
try {
// Si fillim kontrollojme nqs kemi sukses ne marrjen e te dhenave apo jo
int sukses = jsonDega.getInt(TAG_SUKSES);
if (sukses == 1) {
// Ne rast suksesi atehere dmth qe kemi marre te dhenat e degeve dhe fillojme qe ti vendosim ato ne listat perkatese te tyre
Deget = jsonDega.getJSONArray(TAG_DEGET);
// Bredhim tek secili objekt me te dhenat e vektorit json dhe per secilin prej objekteve marrim vlerat qe na duhen
for (int i = 0; i < Deget.length(); i++) {
JSONObject VlObj = Deget.getJSONObject(i);
// Rruajme te dhenat ne listat perkatese ne menyre qe pastaj ti kapim globalisht
listaDegaID.add(VlObj.getString(TAG_DEGE_DID));
listaDegaEmrave.add(VlObj.getString(TAG_DEGE_EMRI));
listaDegaAdresave.add(VlObj.getString(TAG_DEGE_ADRESA));
listaDegaQyteteve.add(VlObj.getString(TAG_DEGE_QYTETI));
listaDegaLat.add(VlObj.getString(TAG_DEGE_LATITUDE));
listaDegaLng.add(VlObj.getString(TAG_DEGE_LONGITUDE));
listaDegaUrlFoto1.add(VlObj.getString(TAG_DEGE_URLFOTO_1));
}
}
} catch (JSONException e) {
e.printStackTrace();
}
return null;
}
}
所以当它从另一个 returns 字符串的方法获取数据时崩溃。
拜托,我需要帮助。
谢谢
您遇到了哪些错误?你能 post 堆栈跟踪吗?不看堆栈很难说什么,但是,我会告诉你检查这个 deshifro
方法的结果。如果它返回 null,则可能会在此处出现 nullPointerException:JSONObject jsonDega = jParserDega.makeHttpRequest(args[0], "GET", params);
当我以这种方式传递 arg 时,一切正常:
new MerrTeDhenatEDegeve().execute("https://navigator.bkt.com.al/bktnavigator/al/deget/al_ilamre_deget.php");
当我以这种方式传递 arg 时它崩溃了:
sh_d sh_d_instance = new sh_d();
new MerrTeDhenatEDegeve().execute(new String(sh_d_instance.deshifro(url_Deget)));
这是我的异步 class:
class MerrTeDhenatEDegeve extends AsyncTask<String, String, String> {
// Marrja e te dhenave te degeve
protected String doInBackground(String... args) {
// Ketu po krijojme parametrat qe do te na duhet per te krijuar querin ne db
List<NameValuePair> params = new ArrayList<NameValuePair>();
// Ketu po bejme kerkesen per tek serveri dhe presim te marrim pergjigjen e json ne string
JSONObject jsonDega = jParserDega.makeHttpRequest(args[0], "GET", params);
try {
// Si fillim kontrollojme nqs kemi sukses ne marrjen e te dhenave apo jo
int sukses = jsonDega.getInt(TAG_SUKSES);
if (sukses == 1) {
// Ne rast suksesi atehere dmth qe kemi marre te dhenat e degeve dhe fillojme qe ti vendosim ato ne listat perkatese te tyre
Deget = jsonDega.getJSONArray(TAG_DEGET);
// Bredhim tek secili objekt me te dhenat e vektorit json dhe per secilin prej objekteve marrim vlerat qe na duhen
for (int i = 0; i < Deget.length(); i++) {
JSONObject VlObj = Deget.getJSONObject(i);
// Rruajme te dhenat ne listat perkatese ne menyre qe pastaj ti kapim globalisht
listaDegaID.add(VlObj.getString(TAG_DEGE_DID));
listaDegaEmrave.add(VlObj.getString(TAG_DEGE_EMRI));
listaDegaAdresave.add(VlObj.getString(TAG_DEGE_ADRESA));
listaDegaQyteteve.add(VlObj.getString(TAG_DEGE_QYTETI));
listaDegaLat.add(VlObj.getString(TAG_DEGE_LATITUDE));
listaDegaLng.add(VlObj.getString(TAG_DEGE_LONGITUDE));
listaDegaUrlFoto1.add(VlObj.getString(TAG_DEGE_URLFOTO_1));
}
}
} catch (JSONException e) {
e.printStackTrace();
}
return null;
}
}
所以当它从另一个 returns 字符串的方法获取数据时崩溃。
拜托,我需要帮助。 谢谢
您遇到了哪些错误?你能 post 堆栈跟踪吗?不看堆栈很难说什么,但是,我会告诉你检查这个 deshifro
方法的结果。如果它返回 null,则可能会在此处出现 nullPointerException:JSONObject jsonDega = jParserDega.makeHttpRequest(args[0], "GET", params);