【问题标题】:Use my variables from AsyncTask class everywhere在任何地方使用我的 AsyncTask 类中的变量
【发布时间】:2019-06-01 08:10:25
【问题描述】:

我从带有 json 的 api 获取一些信息,并将其添加到一些变量上。问题是我不知道如何在其他类中使用它们。这是我的 AsyncTask 类

class TestJson extends AsyncTask<String,String,String> {
     public static String aJsonString;

     @Override
     protected String doInBackground(String... strings) {


         ArrayList<Geocode> geocodes = null;

         DefaultHttpClient httpclient = new DefaultHttpClient(new BasicHttpParams());
         HttpPost httppost = new HttpPost("https://developers.zomato.com/api/v2.1/geocode?lat=40.712776&lon=-74.005974");

         httppost.setHeader("user-key", "mykey");


         InputStream inputStream = null;
         String result = null;
         try {
             HttpResponse response = httpclient.execute(httppost);
             HttpEntity entity = response.getEntity();

             inputStream = entity.getContent();
             // json is UTF-8 by default
             BufferedReader reader = new BufferedReader(new InputStreamReader(inputStream, "UTF-8"), 8);
             StringBuilder sb = new StringBuilder();

             String line = null;
             while ((line = reader.readLine()) != null) {
                 sb.append(line + "\n");
             }
             result = sb.toString();
             JSONObject jObject = new JSONObject(result);


             JSONObject jsonObject= (JSONObject) jObject.get("location");


             //for nested json objects
             String title=(String)jsonObject.get("city_name");


             aJsonString = jObject.getString("link");

         } catch (Exception e) {

         } finally {
             try {
                 if (inputStream != null) inputStream.close();
             } catch (Exception squish) {
             }
         }

         try {

         } catch (Exception e) {
             e.printStackTrace();


         }
         return null;
     }
 }

例如,我将 aJsonString 设为静态,但如果我在其他任何地方调用它,它都会给我 null。对此有什么想法吗?

【问题讨论】:

  • 你知道解析成功了吗?尝试在分配aJsonString 之前放置一条日志语句。值正确吗?
  • 是的,我得到了我想要的(我使用了日志),但我不能在其他任何地方使用变量
  • @I.Renk 我做错了我不知道。你给我的界面示例不起作用:/

标签: android json variables android-asynctask


【解决方案1】:

尝试将 json 数据存储到具有公共访问权限的静态变量(类级别/全局)中,然后在任何您想要的地方共享。(您可能需要一些 if - else 条件来检查有效数据和非空数据)。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-08-19
    • 1970-01-01
    • 2020-10-18
    • 2022-01-21
    相关资源
    最近更新 更多