在任何地方使用我的 AsyncTask 类中的变量
Posted
技术标签:
【中文标题】在任何地方使用我的 AsyncTask 类中的变量【英文标题】:Use my variables from AsyncTask class everywhere 【发布时间】: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
之前放置一条日志语句。值正确吗?
是的,我得到了我想要的(我使用了日志),但我不能在其他任何地方使用变量
这有用吗? ***.com/questions/12575068
@I.Renk 我做错了我不知道。你给我的界面示例不起作用:/
【参考方案1】:
尝试将 json 数据存储到具有公共访问权限的静态变量(类级别/全局)中,然后在任何您想要的地方共享。(您可能需要一些 if - else 条件来检查有效数据和非空数据)。
【讨论】:
以上是关于在任何地方使用我的 AsyncTask 类中的变量的主要内容,如果未能解决你的问题,请参考以下文章
WooCommerce:在任何地方添加/显示产品或变体自定义字段
是否可以在任何地方替换全局“operator new()”?
Flutter 从 Api 获取 Userinfo 并在任何地方使用。请帮我