Java Gson-Android和异步任务
不久前我有一个关于GSON的问题,现在我被告知使用一种叫做AsyncTask的东西 尽管关于如何使用它的描述非常简短 我设法让它在某种程度上起作用 这是我的异步类:Java Gson-Android和异步任务,java,android,Java,Android,不久前我有一个关于GSON的问题,现在我被告知使用一种叫做AsyncTask的东西 尽管关于如何使用它的描述非常简短 我设法让它在某种程度上起作用 这是我的异步类: public class JsonCollector extends AsyncTask<URL, integer, String> { private String finalString; public JsonCollector(){ } public String test(){ URL url = n
public class JsonCollector extends AsyncTask<URL, integer, String> {
private String finalString;
public JsonCollector(){
}
public String test(){
URL url = null;
try {
url = new URL("http://api.heroesofnewerth.com/player_statistics/ranked/nickname/Hieratic/?token=0CZGH8ZI7UR8J2GN");
} catch (MalformedURLException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
BufferedReader reader = null;
String x = "";
try {
reader = new BufferedReader(new InputStreamReader(url.openStream(), "UTF-8"));
for (String line; (line = reader.readLine()) != null;) {
System.out.println(line);
x = line;
}
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} finally{
if (reader !=null) try{reader.close();} catch (IOException ignore) {
}{}
}
this.finalString = x;
return x;
}
@Override
protected String doInBackground(URL... params) {
JsonElement root = new JsonParser().parse(test());
finalString = root.getAsJsonObject().get("rnk_wins").toString();
return "";
}
public String getFinalString(){
return finalString;
}
请注意,我已将库添加到我的项目中:
有人能告诉我为什么我没有找到类执行选项吗?事实上,您在
引用库下有它是您的问题
您需要做的是在项目文件夹中创建一个\libs
,并将jar文件放在那里
这将导致将此库放在项目中的Android Dependecies
文件夹下(您可能需要清除项目/关闭并重新打开Eclipse)
更新:
这个屏幕截图应该解释一下,您应该将项目使用的.jar
文件放在哪里
你的\libs文件夹中有gson jar文件吗?@EmilAdz我在我的参考库下有它们。你的意思是我应该创建一个名为libs的文件夹,并在其中输入jar。你为我省去了很多麻烦。非常感谢。顺便问一下,我正确处理gson的方法是什么?我的意思是,若我的答案对你们有帮助,你们应该投票/接受它。关于gson的处理,它看起来是正确的,看看这篇文章:
05-15 19:51:05.091: E/AndroidRuntime(1832): FATAL EXCEPTION: AsyncTask #1
05-15 19:51:05.091: E/AndroidRuntime(1832): java.lang.RuntimeException: An error occured while executing doInBackground()
05-15 19:51:05.091: E/AndroidRuntime(1832): at android.os.AsyncTask$3.done(AsyncTask.java:299)
05-15 19:51:05.091: E/AndroidRuntime(1832): at java.util.concurrent.FutureTask.finishCompletion(FutureTask.java:352)
05-15 19:51:05.091: E/AndroidRuntime(1832): at java.util.concurrent.FutureTask.setException(FutureTask.java:219)
05-15 19:51:05.091: E/AndroidRuntime(1832): at java.util.concurrent.FutureTask.run(FutureTask.java:239)
05-15 19:51:05.091: E/AndroidRuntime(1832): at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:230)
05-15 19:51:05.091: E/AndroidRuntime(1832): at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1080)
05-15 19:51:05.091: E/AndroidRuntime(1832): at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:573)
05-15 19:51:05.091: E/AndroidRuntime(1832): at java.lang.Thread.run(Thread.java:856)
05-15 19:51:05.091: E/AndroidRuntime(1832): Caused by: java.lang.NoClassDefFoundError: com.google.gson.JsonParser
05-15 19:51:05.091: E/AndroidRuntime(1832): at logic.JsonCollector.doInBackground(JsonCollector.java:47)
05-15 19:51:05.091: E/AndroidRuntime(1832): at logic.JsonCollector.doInBackground(JsonCollector.java:1)
05-15 19:51:05.091: E/AndroidRuntime(1832): at android.os.AsyncTask$2.call(AsyncTask.java:287)
05-15 19:51:05.091: E/AndroidRuntime(1832): at java.util.concurrent.FutureTask.run(FutureTask.java:234)
05-15 19:51:05.091: E/AndroidRuntime(1832): ... 4 more