有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

静态方法上异步任务的java Get计数始终返回0

伙计们,我在这里呆了大约2个小时,有一件事看起来很简单,但从来没有返回对象的数量

我将解释whit代码:

下载文件异步任务。java(是我的异步任务)

在OnPostExecute中,我这样做:

if(customAdapter != null){
    Log.i("solteiroApp","object count is "+customAdapter.getCount());
    ResultActivity.rec_count  = customAdapter.getCount(); // HERE I PASS COUNT
}

结果性。爪哇

public class ResultActivity extends Activity {

    public static int rec_count;
...

问题是:当我在onCreate中获取ResultActivity.rec_count时,总是返回0,但我会按照之前显示的方式创建日志:

Log.i("solteiroApp","object count is "+customAdapter.getCount());

这将正确返回计数

我不知道,因为这是因为,如果有人有建议获取此计数,请告诉我,im小时在这里尝试返回此计数以显示在活动中,但在我执行时没有返回值,如果我再次使用AsyncTask返回以前的值,请有人帮助我


共 (3) 个答案

  1. # 1 楼答案

    我明白了

    在我的AsyncTask中,我将how参数传递给TextView,并在AsyncTask how WeakReference中声明:

    public class DownloadFileAsyncTask extends AsyncTask<String,Void,String> {
    ..
        private WeakReference list=null,count_text=null; // Views i update in my AsyncTask
    ..
    

    建造师:

    public DownloadFileAsyncTask(View v,Context contextt,View txt) {
        list = new WeakReference(v);
        count_text = new WeakReference(txt);
        this.context = contextt;
    }
    

    和onPostExecute:

       ListView l = (ListView) list.get();
       TextView t = (TextView) count_text.get();
    
       t.setText(customAdapter.getCount()+" objects found");
    

    谢谢大家的帮助,有时是好的,有时是错误的,回来,新的想法回来呵呵,谢谢大家

  2. # 2 楼答案

    你不能做你想做的事。当Android操作系统(重新)创建要运行的上下文时,它将销毁并重新创建静态类及其静态变量。我还了解到(艰难的方式)单例类不能用于将数据从一个活动保存到另一个活动

    您需要做的是将数据传递到新活动的Intent Bundle中,或者将其保存在SharedReference中。为此使用回调接口是个坏主意,因为您希望操作向前移动到下一个活动,并且(如果需要)允许操作系统销毁上一个活动

    在为下一个活动创建意图时,使用意图。putExtra(…)方法添加要传递给新活动的数据。在新活动中,使用getIntent()。获取*数据类型*额外(…)方法检索数据

  3. # 3 楼答案

    1.在调用OnPostExecute之前,是否在onCreate中获取rec_计数?检查你的代码 2、如果没有,请在rec_count之前添加volatile:public static volatile int rec_count,请尝试一下,希望能对您有所帮助