我试图将上下文从一个类传递到另一个扩展AsyncTask。这是密码:
loadSomeStuff slb = new SamsungLB().new loadSomeStuff();
slb.execute(USA.this.getSherlockActivity());AsyncTask:
public void execute(SherlockFragmentActivity sherlockActivity) {
// TODO Auto-generated method stub
this.ctx = sherlockActivity;
}那活动就不起作用了。所以我去检查上下文是否为null:
if (ctx == null) {
System.out.print("null");
}是的,我是对的,我的上下文是空的!我觉得我从不调用execute方法:/有什么建议吗?以下是我的完整AsyncTask课程:
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;
}
}发布于 2013-08-03 20:43:54
您可以首先创建如下构造函数:
public loadSomeStuff(SherlockFragmentActivity sherlockActivity) {
// TODO Auto-generated method stub
this.ctx = sherlockActivity;
}不要忘记检查是否添加了f片段
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();
}
}
}然后当你创建它时:
LoadSomeStuff slb = new SamsungLB().new loadSomeStuff(USA.this.getSherlockActivity());然后执行就像一个正常的异步任务!
slb.execute();我希望我的答案能帮到你:)
https://stackoverflow.com/questions/18037048
复制相似问题