问题是我的方法从doInBackground返回0到onPostExecute,我尝试了很多但是没有得到如何解决它,请帮助
@Override
protected String doInBackground(String... params) {
makeCount(URL_ORDERS_US,count);
return null;
}
这是方法
public void makeCount(String uri,int countnow){
List<NameValuePair> paramUS = new ArrayList<NameValuePair>();
JSONObject json = jsonParser.makeHttpRequest(uri, "GET", paramUS, SavedToken);
try {
JSONObject data = json.getJSONObject("data");
JSONObject orders = data.getJSONObject("orders");
Iterator<String> orderIterator = orders.keys();
while (orderIterator.hasNext()) {
try{
JSONObject c = orders.getJSONObject(orderIterator.next());
countnow++;
}
catch(Exception e){
e.printStackTrace();
}
}
}catch (JSONException e){e.printStackTrace();}
}
和onPostExecute
@Override
protected void onPostExecute(String s) {
usac.setText(String.valueOf(count));
pDialog.dismiss();
}
答案 0 :(得分:0)
CountNow通过java中任何其他参数的值传递。将其声明为已创建的asynctask cuatom类的成员,因为您只是修改本地副本而不是您想要实现的全局行为
答案 1 :(得分:0)
您的doInBackground
返回null。 null
是onPostExecute
的参数。请注意,您在onPostExecute中根本没有使用String的参数。您使用String.valueOf(count)
。 `count'来自哪里?
这是AsyncTask的成员变量吗?如果是,它应该工作 - 根据 https://developer.android.com/reference/android/os/AsyncTask.html 内存可观察性
但是您的count
成员变量永远不会被修改。您可以修改其副本 - makeCount函数的countnow
参数。
请参阅Is Java "pass-by-reference" or "pass-by-value"?,了解讨论参数如何传递给函数的问题。
答案 2 :(得分:0)
public void makeCount(String uri,int countnow){
List<NameValuePair> paramUS = new ArrayList<NameValuePair>();
JSONObject json = jsonParser.makeHttpRequest(uri, "GET", paramUS, SavedToken);
try {
JSONObject data = json.getJSONObject("data");
JSONObject orders = data.getJSONObject("orders");
Iterator<String> orderIterator = orders.keys();
while (orderIterator.hasNext()) {
try{
JSONObject c = orders.getJSONObject(orderIterator.next());
publishProgress(countnow++);
}
catch(Exception e){
e.printStackTrace();
}
}
}catch (JSONException e){e.printStackTrace();}
}
然后是您的发布进度
@Override
protected Integer onProgressUpdate(Integer... values) { // the integer means it takes int as a value..
// TODO Auto-generated method stub
super.onProgressUpdate(values);
//this methos updates the ui like the postexecute, just that in here you do,temporary
//updates
}
我发布了这段代码,因为我的理解是你想要用价值或次数做点什么,这就是为什么我发布它,我的理解可能是错的,如果我错了,请告诉我,Sir Alex先生。
注意:可能存在愚蠢的错误,所以请更正它们,比如拼写或代码格式,我这样做没有和编辑..谢谢..