Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/186.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 无法解析AsyncTask返回变量_Android_Arraylist_Android Asynctask - Fatal编程技术网

Android 无法解析AsyncTask返回变量

Android 无法解析AsyncTask返回变量,android,arraylist,android-asynctask,Android,Arraylist,Android Asynctask,此AsyncTask代码有什么问题,它阻止返回数组进度。。。我在注释行中得到“进度无法解析为变量” public class FetchProgress extends AsyncTask<OpportunityActivity, Void, ArrayList<Progress>> { private OpportunityActivity opportunityActivity; @Override protected ArrayList<Progress&g

此AsyncTask代码有什么问题,它阻止返回数组进度。。。我在注释行中得到“进度无法解析为变量”

public class FetchProgress extends AsyncTask<OpportunityActivity, Void, ArrayList<Progress>> {
private OpportunityActivity opportunityActivity;

@Override
protected ArrayList<Progress> doInBackground(OpportunityActivity... activity) {
    opportunityActivity = activity[0];             
    String readFeed = readFeed();
    // this JSON feed is delivered correctly

    try {       
       JSONObject json = new JSONObject(readFeed);                 
       JSONObject jsonObject = new JSONObject(json.optString("ShowProgress"));

          Progress progress = new Progress();
          progress.setShowProgress(jsonObject.getBoolean("ShowProgress"));
          progress.setTarget(jsonObject.getInt("Target"));

     // the above values are set correctly and appear if I use Log            

    } catch (Exception e) {    
        e.printStackTrace();
    }
   // HERE'S THE ISSUE: 
   // Eclipse reports "progress cannot be resolved to a variable"
   return progress;
}
以下是onPostExecute:

public void onPostExecute(ArrayList<Progress> progress) {
     opportunityActivity.updateProgress(progress);
}
public void onPostExecute(ArrayList<Progress> progress) {
     opportunityActivity.updateProgress(progress);
}
public void onPostExecute(ArrayList进度){
opportunityActivity.updateProgress(进度);
}
当我无法访问传递的ArrayList时,它触发的方法:

public void updateProgress(ArrayList<Progress> progress) {      
    progress_text  = (TextView)findViewById(R.id.progress_text);          
    progress_text.setText("Target: " + progress.getTarget());
}
public void updateProgress(ArrayList进程){
progress\u text=(TextView)findViewById(R.id.progress\u text);
progress_text.setText(“目标:+progress.getTarget());
}
切掉这条线

 Progress progress = new Progress();
并将其粘贴到try语句中

ArrayList<Progress> progressArray=new ArrayList();

  Progress progress = new Progress();

try {       
       JSONObject json = new JSONObject(readFeed);                 
       JSONObject jsonObject = new JSONObject(json.optString("ShowProgress"));


          progress.setShowProgress(jsonObject.getBoolean("ShowProgress"));
          progress.setTarget(jsonObject.getInt("Target"));
       progressArray.add(progress);
     // the above values are set correctly and appear if I use Log            

    } catch (Exception e) {    
        e.printStackTrace();
    }
   return progressArray;
ArrayList progressArray=new ArrayList();
进度=新的进度();
试试{
JSONObject json=新的JSONObject(readFeed);
JSONObject JSONObject=新的JSONObject(json.optString(“ShowProgress”);
progress.setShowProgress(jsonObject.getBoolean(“ShowProgress”);
setTarget(jsonObject.getInt(“Target”);
progressArray.add(进度);
//以上值设置正确,如果使用日志,则会显示
}捕获(例外e){
e、 printStackTrace();
}
返回数组;
因为您已经在try-Catch中声明并初始化了它,所以它对您的方法不可见

编辑

但它仍然是错误的,因为它只是您试图返回的类的对象,而您的方法希望返回类型为的ArrayList。所以我编辑了关于如何返回ArrayList的答案

感谢安德罗(他将获得更高的声誉)

我最终使用这个循环访问了数组中的值(似乎没有必要),但它最终从这个一维数组中获取了元素:

   for (Progress i : progress) 
   progress_text.setText(i.getOrange() + " / " + i.getTarget() + " hours");        
    progressHours.setMax(i.getTarget());
    progressHours.setProgress(i.getOrange());           
    }

如果我移动行
Progress-Progress=newprogress(),我欢迎您对是否需要添加第二维度发表意见。

在try语句之外,然后我得到一个新的错误“类型不匹配:无法从Progress转换到ArrayList”,用于我的
返回Progress
;谢谢-现在数组没有被传递到onPostExecute和最终的方法上(参见更新的代码)。如何正确传输并访问传递的数组变量这表示我仍然无法访问onPostExecute方法updateProgress中的数组。感谢您的帮助。您应该先学习Java的基础知识:
   for (Progress i : progress) 
   progress_text.setText(i.getOrange() + " / " + i.getTarget() + " hours");        
    progressHours.setMax(i.getTarget());
    progressHours.setProgress(i.getOrange());           
    }