我正在调用php脚本,它从android lass访问我的数据库。课程如下;
public class pk_http {
// Progress Dialog
private ProgressDialog qDialog;
// JSON parser class
JSONParser jParser = new JSONParser();
class phpCall extends AsyncTask<String, String, String> {
@Override
protected String doInBackground(String... args) {
// Building Parameters
String url = args[0];
List<NameValuePair> params = new ArrayList<NameValuePair>();
// getting JSON string from URL
JSONObject json = jParser.makeHttpRequest(url, "GET",params);
return null;
}
}
现在当我从我的调用类调用它时(调用类没有以这种方式扩展Activity btw);
public static ArrayList<String> getLoginTileDataArray(Context c)
{
//CODE STUB: HTTP GET RETURNS THE FOLLOWING STRING
String result = pk_http.phpCall.execute("http://myUrl/phpFile.php");
.
.
.
我有一个错误的预编译说:
非静态方法'execute(Params ...)不能从a引用 静态背景。
如果我删除'sttic'没有变化。我正确地调用了异步方法吗?
答案 0 :(得分:1)
您无法像这样调用execute
,它不是静态方法。使用new
public static ArrayList<String> getLoginTileDataArray(Context c)
{
//CODE STUB: HTTP GET RETURNS THE FOLLOWING STRING
(new pk_http.phpCall()).execute("http://myUrl/phpFile.php");
.
.
.
<强>更新强>
您的代码有错误,错过了}
中的一个pk_http
。您需要搜索有关AsyncTask
的更多信息,在doInBackground()
中执行长时间任务,并将结果处理为来自onPostExecute()
这是一个简单的代码:
public class pk_http {
public void execute(String s) {
(new phpCall()).execute(s);
}
// Progress Dialog
private ProgressDialog qDialog;
// JSON parser class
JSONParser jParser = new JSONParser();
class phpCall extends AsyncTask<String, String, String> {
@Override
protected String doInBackground(String... args) {
// Building Parameters
String url = args[0];
List<NameValuePair> params = new ArrayList<NameValuePair>();
// getting JSON string from URL
JSONObject json = jParser.makeHttpRequest(url, "GET", params);
// TODO: return your result here, this will pass to onPostExecute(String)
return null;
}
@Override
protected void onPostExecute(String s) {
// TODO: This is in UI thread, handle your result from doInBackground().
}
}
}
也许是在MainActivity中:
public static ArrayList<String> getLoginTileDataArray(Context c)
{
//CODE STUB: HTTP GET RETURNS THE FOLLOWING STRING
(new pk_http()).execute("http://myUrl/phpFile.php");
.
.
.