首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在AsyncTask中调用execute()

问在AsyncTask中调用execute()
EN

Stack Overflow用户
提问于 2013-08-03 20:35:16
回答 1查看 983关注 0票数 0

我试图将上下文从一个类传递到另一个扩展AsyncTask。这是密码:

代码语言:javascript
复制
loadSomeStuff slb = new SamsungLB().new loadSomeStuff();
                        slb.execute(USA.this.getSherlockActivity());

AsyncTask:

代码语言:javascript
复制
public void execute(SherlockFragmentActivity sherlockActivity) {
            // TODO Auto-generated method stub
            this.ctx = sherlockActivity;
        }

那活动就不起作用了。所以我去检查上下文是否为null:

代码语言:javascript
复制
if (ctx == null) {
                System.out.print("null");
            }

是的,我是对的,我的上下文是空的!我觉得我从不调用execute方法:/有什么建议吗?以下是我的完整AsyncTask课程:

代码语言:javascript
复制
public class loadSomeStuff extends AsyncTask<String, Integer, String> {

ProgressDialog dialog;
Context ctx;

protected void onPreExecute() {
    dialog = new ProgressDialog(ctx);
    dialog.setProgressStyle(ProgressDialog.STYLE_SPINNER);
    dialog.setCancelable(false);
    dialog.setIndeterminate(false);
    dialog.setMessage(getResources().getString(R.string.searching));
    dialog.show();
}

@Override
protected String doInBackground(String... params) {
    // TODO Auto-generated method stub
    //fillinglistview//
    }
    if (ctx == null) {
        System.out.print("null");
    }
    return null;
}

protected void onProgressUpdate(Integer... progress) {

}

protected void onPostExecute(String result) {
    listview.setAdapter(new MyListAdapterSamsung(getActivity(),
            beanClass));
    if (beanClass.isEmpty()) {
        Toast.makeText(getSherlockActivity(), "No Connection",
                Toast.LENGTH_LONG).show();
    }

}

public void execute(SherlockFragmentActivity sherlockActivity) {
    // TODO Auto-generated method stub
    this.ctx = sherlockActivity;
}
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-08-03 20:43:54

您可以首先创建如下构造函数:

代码语言:javascript
复制
public loadSomeStuff(SherlockFragmentActivity sherlockActivity) {

    // TODO Auto-generated method stub
    this.ctx = sherlockActivity;
}

不要忘记检查是否添加了f片段

代码语言:javascript
复制
protected void onPostExecute(String result) {
   if(isAdded()){
        listview.setAdapter(new MyListAdapterSamsung(getActivity(),
               beanClass));
        if (beanClass.isEmpty()) {
            Toast.makeText(getSherlockActivity(), "No Connection",
                   Toast.LENGTH_LONG).show();
       }
   }
}

然后当你创建它时:

代码语言:javascript
复制
LoadSomeStuff slb = new SamsungLB().new loadSomeStuff(USA.this.getSherlockActivity());

然后执行就像一个正常的异步任务!

代码语言:javascript
复制
 slb.execute();

我希望我的答案能帮到你:)

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18037048

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档