30/09/2018, 23:44
Hỏi về hàm onPostExcute() trong AsynTask trong Android
em có 1 đoạn json như này (http://api…com)
{
"Tenants": [
{
"TenantId": 14350,
"TenantName": "Vũ Phương Mai",
"CellPhone": "0903491910",
"Email": "phuongmaivu87@gmail.com"
}
]
}
em đã tạo 1 class Tenants (có 4 biến TenantId, TenantName, CellPhone, Email, với đầy đủ phương thức getter và setter rồi)
đây là đoạn code lấy về mã json trên và hiển thị lên màn hình:
class TenantsTask extends AsyncTask<Void, Void, Tenants>{
@Override
protected void onPreExecute() {
super.onPreExecute();
}
@Override
protected void onPostExecute(Tenants tenants) {
super.onPostExecute(tenants);
tenants.getTenantId();
tenants.getTenantName();
tenants.getCellPhone();
tenants.getEmail()
}
@Override
protected void onProgressUpdate(Void... values) {
super.onProgressUpdate(values);
}
@Override
protected Tenants doInBackground(Void... params) {
Tenants tenants = new Tenants();
try{
URL url = new URL("http://api........com");
HttpURLConnection connection = (HttpURLConnection) url.openConnection();
InputStreamReader inputStreamReader = new InputStreamReader(connection.getInputStream(), "UTF-8");
BufferedReader bufferedReader = new BufferedReader(inputStreamReader);
StringBuilder stringBuilder = new StringBuilder();
String line = bufferedReader.readLine();
while(line != null){
stringBuilder.append(line);
line = bufferedReader.readLine();
}
JSONObject jsonObjectRoot = new JSONObject(stringBuilder.toString());
JSONArray jsonArrayTenants = jsonObjectRoot.getJSONArray("Tenants");
for(int i = 0; i < jsonArrayTenants.length(); i++){
JSONObject jsonObject = jsonArrayTenants.getJSONObject(i);
if(jsonObject.has("TenantId"))
tenants.setTenantId(jsonObject.getString("TenantId"));
if(jsonObject.has("TenantName"))
tenants.setTenantName(jsonObject.getString("TenantName"));
if(jsonObject.has("CellPhone"))
tenants.setCellPhone(jsonObject.getString("CellPhone"));
if(jsonObject.has("Email"))
tenants.setEmail(jsonObject.getString("Email"));
}
}
catch (Exception ex){
Log.e("LOI", ex.toString());
}
return tenants;
}
}
nhưng khi chạy thì không hiển thị được các thông tin: enantId, TenantName, CellPhone, Email
code thì ko lỗi nha.
em nghĩ em đang bị sai trong hàm onPostExcute(),
mọi người giúp em với ạ
Bài liên quan
Đọc lại code trên đâu thấy chỗ nào bạn cho “hiển thị” thông tin ra đâu?
ý mình đoạn code trên là dùng 4 hàm của AsynTask để xử lý và mình nghĩ mấy câu lệnh trong hàm onPostExcute() đang bị sai nhưng không biết sửa thế nào, còn đoạn hiển thị mình ko đưa lên đây (vì đoạn đó ko sai)
bạn dùng Log.i, Log.d, Log.e để xuất log ra nhé.