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 ạ

X viết 01:48 ngày 01/10/2018

Đọc lại code trên đâu thấy chỗ nào bạn cho “hiển thị” thông tin ra đâu?

bongtoi viết 01:58 ngày 01/10/2018

ý 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)

Nghia Nguyen viết 01:54 ngày 01/10/2018

bạn dùng Log.i, Log.d, Log.e để xuất log ra nhé.

Bài liên quan
0