Относительно этого:
HTTPPostData PostData = new HTTPPostData("id");
PostData.execute();
txtLabel.setText(PostData.Result);
Ваша проблема в том, что вы рассматриваете асинктическую задачу, как будто это обычная функция.Хорошо, что вы перемещаете загрузку веб-страницы из основного потока, но если вы зависите от результата для следующей инструкции, то это не очень хорошо для вас, вы все еще блокируете основную программу в ожидании результата.Вы должны думать об AsyncTask как о операции «запусти и забудь», в которой вы не знаете, когда, если вообще когда-нибудь, она вернется.
Лучшее, что можно сделать здесь, было бы что-то вроде:
HTTPPostData PostData = new HTTPPostData("id");
PostData.execute();
txtLabel.setText("Loading...");
, а затем в асинхронной задаче:
protected void onPostExecute(String result) {
txtLabel.setText(result);
}
Это позволяет вашему основному потоку продолжить работуэто дело, не зная результата асинктической задачи, и затем, как только данные станут доступны, асинктическая задача заполнит текстовую метку результатом.