我写了一个扩展异步任务的类;我发送数据给它,类返回一个json对象
但是在异步任务上的预执行功能不起作用且我的程序在完成其工作之前进入无响应模式
public class async_Task extends AsyncTask<Void, Void, JSONObject>
{
Context mycontext;
List<NameValuePair> query_List=new ArrayList<NameValuePair>();
String str_URL;
ProgressDialog progressDialog;
JSONObject jsonObject =null;
JSONParser jsonParser =new JSONParser();
public async_Task(Context context,List<NameValuePair> lst_NameValuePairs,String url_String)
{
this.mycontext =context;
this.query_List =lst_NameValuePairs;
this.str_URL =url_String;
progressDialog =new ProgressDialog(mycontext, ProgressDialog.THEME_HOLO_LIGHT);
}
@Override
protected void onPreExecute()
{
progressDialog.setMessage("wait please...");
progressDialog.setProgressStyle(ProgressDialog.STYLE_SPINNER);
progressDialog.setCancelable(false);
progressDialog.show();
}
@Override
protected JSONObject doInBackground(Void... arg0)
{
try
{
jsonObject=jsonParser.store_And_Feedback(str_URL, query_List);
}
catch (Exception e)
{
try
{
jsonObject.put("res_code", "-5");
jsonObject.put("res", e.getMessage());
}
catch (JSONException e1)
{
// TODO Auto-generated catch block
e1.printStackTrace();
}
}
return jsonObject;
}
@Override
protected void onPostExecute(JSONObject args)
{
progressDialog.dismiss();
}
}
我在我的活动中调用了异步任务
jsonObject=new async_Task(JAct_Singup.this, lst_NameValuePairs, str_Url).execute().get();
我需要获取结果(jsonobject)形式的异步任务,并在删除get()时;我给出了这个错误
Type mismatch: cannot convert from AsyncTask<Void,Void,JSONObject> to JSONObject
答案 0 :(得分:0)
store_And_Feedback(str_URL,query_List)方法出错了。
逐行调试store_And_Feedback(str_URL,query_List)方法。
或发布在此处,以便我可以查看此内容
答案 1 :(得分:0)
最后我找到了解决方案
1-创建新的interface
类
public interface AsyncResponse
{
void progressEnd(JSONObject jsonObject);
}
2-声明异步任务类中的类
public class async_Task extends AsyncTask<Void, Void, JSONObject>
{
public AsyncResponse response =null;
@Override
protected void onPreExecute()
{
....
}
@Override
protected JSONObject doInBackground(Void... arg0)
{
...
return jsonObject;
}
@Override
protected void onPostExecute(JSONObject args)
{
...
response.progressEnd(jsonObject);
}
}
3-从创建的interface
类(AsyncResponse)
public class JAct_Singup extends Activity implements AsyncResponse
{
.........
@Override
public void progressEnd(JSONObject jsonObject)
{
...
}
}
每次调用异步任务类时,在完成异步任务后调用progressEnd