Java代码赢得';调用classes函数后不执行
我已经创建了一个程序,它将通过PHP连接到数据库并回显响应。然后,我的android程序向PHP文件发出请求,并读取回音Java代码赢得';调用classes函数后不执行,java,android,Java,Android,我已经创建了一个程序,它将通过PHP连接到数据库并回显响应。然后,我的android程序向PHP文件发出请求,并读取回音 public class Read_Author extends AsyncTask<String, Void, String> { String authorName = ""; @Override public String doInBackground(String... params) { try {
public class Read_Author extends AsyncTask<String, Void, String> {
String authorName = "";
@Override
public String doInBackground(String... params) {
try {
HttpClient httpclient = new DefaultHttpClient();
HttpPost httppost = new HttpPost("http://localhost/scripts/read_information.php");
HttpResponse response = httpclient.execute(httppost);
authorName = String.valueOf(EntityUtils.toString(response.getEntity()));
String myStr = "ANSWER";
Log.v(myStr, authorName);
}
catch(Exception e){
}
return authorName;
}
public String returnAuthor(){
return authorName;
}
如果有人对为什么会发生这种情况以及如何解决它有任何建议,我们将不胜感激 您似乎对
AsyncTask
有误解。AsyncTask
的结果可能不会立即可用,因为后台任务可能尚未完成
您需要重写AsyncTask
中的onPostExecute
方法,以便在后台任务完成后执行某些任务
在执行AsyncTask
final ProgressDialog progressDialog = new ProgressDialog(this);
progressDialog.setMessage("Loading..");
progressDialog.setCancelable(false);
progressDialog.show();
然后在onPostExecute:
@Override
protected void onPostExecute(String result) {
progressDialog.dismiss();
Log.d("author", result);
}
你有一个任务,您不需要调用no returnAuthor,而是等待tast完成并返回字符串结果。我可以在类中使用哪种侦听器?好的,因此,一旦我添加了onPostExecute函数并且后台任务完成,onPostExecute将运行,然后我就应该返回字符串了?如果是这样,当异步任务在后台执行时,我的主要活动代码会做什么?有没有办法让主活动等待后台可执行文件完成?您可能不想通过等待后台任务完成来冻结应用程序。您必须在
onPostExecute
中实现代码。这就是回调的工作方式。好吧,我对java环境相当陌生,我一直在尝试添加onPostExecute覆盖,但没有被识别。就在doInBackground函数结束后,我做了:@Override protected String onPostExecute(String Result){return Result;}我遗漏了什么,有什么我没有掌握的吗?onPostExecute是否必须返回布尔值,我只想在后台处理完成后返回字符串值!我被告知onPostExecute与doInBackground可执行文件冲突。onPostExecute
have void返回类型。选中编辑的答案。字符串返回到哪里?我还没有指定将字符串返回到哪里?如果有默认位置,我尝试添加字符串s=loadAuthor.execute,但在代码下收到红色。
@Override
protected void onPostExecute(String result) {
progressDialog.dismiss();
Log.d("author", result);
}