Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/361.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
Java 获取静态方法上异步任务的计数始终返回0_Java_Android_Static_Android Asynctask - Fatal编程技术网

Java 获取静态方法上异步任务的计数始终返回0

Java 获取静态方法上异步任务的计数始终返回0,java,android,static,android-asynctask,Java,Android,Static,Android Asynctask,伙计们,我在这里呆了大约2个小时,有一件事看起来很简单,但从来没有返回对象的数量 我将解释whit代码: DownloadFileAsyncTask.java(是我的异步任务) 在OnPostExecute中,我这样做: if(customAdapter != null){ Log.i("solteiroApp","object count is "+customAdapter.getCount()); ResultActivity.rec_count = customAdap

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

我将解释whit代码:

DownloadFileAsyncTask.java(是我的异步任务)

在OnPostExecute中,我这样做:

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

public class ResultActivity extends Activity {

    public static int rec_count;
...
问题是:当我在
onCreate
中获得
resultivity.rec\u count
时,总是返回0,但我将日志设置为以前显示的方式:

Log.i("solteiroApp","object count is "+customAdapter.getCount());
这将正确返回计数


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

1,在调用OnPostExecute之前,是否在onCreate中获取rec_计数?检查你的代码
2、如果没有,请在rec\u count之前添加volatile:public static volatile int rec\u count,请尝试一下,希望可以帮助您。

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

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

为下一个活动创建意图时,可以使用Intent.putExtra(…)方法添加要传递给新活动的数据。在新活动中,使用getIntent().get*Datatype*Extra(..)方法检索数据。

我明白了

在我的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
..
和onPostExecute:

   ListView l = (ListView) list.get();
   TextView t = (TextView) count_text.get();

   t.setText(customAdapter.getCount()+" objects found");

谢谢大家的帮助,有时是好的,请留下一些错误,然后回来,新想法会回来,呵呵,谢谢大家。

你的asynctask是你活动类的一个内部类吗?不是,是另一个类:DownloadFileAsyncTask.java然后您可以使用一个接口作为回调来获取从asynctask到activity类的计数,或者将asynctask设置为一个内部类,并在`nPostExecutecheck this 1-After OnPostExecute中获取计数。我尝试了,但返回了相同的0=/。否是到其他活动的转换,我的AsyncTask返回一个对象列表,在这个列表中,我想要得到这个对象的计数,谢谢。
   ListView l = (ListView) list.get();
   TextView t = (TextView) count_text.get();

   t.setText(customAdapter.getCount()+" objects found");