我正在尝试学习如何调用嵌套在另一个类中的 AsyncTask。
A 类(AsyncTask 的子类)。 B类(是mainActivity)。
A 类:
我创建了一个接口(interface),其中包含 AsyncTask 完成时的方法(为了回调)。
在 B 类中:
我将如何调用我的 AsyncTask。似乎是创建实例的正常方法,然后 .execute() 不起作用!我收到以下错误:
No enclosing instance of type NetConnectivity is accessible. Must qualify the allocation with an enclosing instance of type
NetConnectivity (e.g. x.new A() where x is an instance of NetConnectivity).
在此上下文中,NetConnectivity 是 A 类。
感谢您的宝贵时间。
编辑----
这是 NetConnectivity 类:
public class NetConnectivity {
public boolean CheckNetworkAvailability(Context context){
ConnectivityManager connMgr = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo networkInfo = connMgr.getActiveNetworkInfo();
String tag = "NetworkCheck";
if(networkInfo != null && networkInfo.isConnected()){
Log.i(tag, "Network is available");
return true;
} else {
Log.i(tag, "Network is not available");
return false;
}
}
public interface WebServiceAsyncListener {
void WebServiceDone();
}
public static class WebServiceAsync extends AsyncTask <String, Integer, Double>{
private WebServiceAsyncListener wListener;
public WebServiceAsync(Activity act){
wListener = (WebServiceAsyncListener) act;
}
@Override
protected Double doInBackground(String... params) {
postData(params[0]);
return null;
}
protected void onPostExecute(String result) {
wListener.WebServiceDone();
}
public void postData(String valueIWantToSend) {
// Create a new HttpClient and Post Header
HttpClient httpclient = new DefaultHttpClient();
HttpPost httppost = new HttpPost("http://somewebsite.com/receiver.php");
try {
// Add your data
List<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>();
nameValuePairs.add(new BasicNameValuePair("myHttpData", valueIWantToSend));
httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs));
// Execute HTTP Post Request
HttpResponse response = httpclient.execute(httppost);
} catch (ClientProtocolException e) {
} catch (IOException e) {
}
}
}
}
最佳答案
使 AsyncTask 成为“静态”类。
关于android - 如何在 Java 中执行 AsyncTask 子类?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20263225/