Java代码赢得';调用classes函数后不执行

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 {

我已经创建了一个程序,它将通过PHP连接到数据库并回显响应。然后,我的android程序向PHP文件发出请求,并读取回音

    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);
}