Я использую внутренний класс AsyncTasks, чтобы выполнить запрос сервера и обновить свой пользовательский интерфейс в соответствии с результатом. Запрещено ли вызывать метод execute() из postexecute() другого AsyncTask? (Я зову новую updateRating() выполнить() в postexecute() из RatingHospital(), но он не работает :(.)Не удается вызвать метод execute() AsyncTask в другом postynecute AsyncTask()
public class RatingHospital extends AsyncTask<String, String, String> {
JSONParser jsonParser = new JSONParser();
private static final String RATING_URL = "http://2healthpal.fh2web.com/Server/rating.php";
private static final String TAG_SUCCESS = "success";
boolean hasRating;
@Override
protected void onPreExecute() {
super.onPreExecute();
}
@Override
protected String doInBackground(String... params) {
//Background works
return null;
}
@Override
protected void onPostExecute(String result) {
if (hasRating==true)
{
showUpdateAlert();
}
else {
showRatingDialog();
//TODO
}
}
private void showRatingDialog() {
final Dialog d = new Dialog(Main.this);
d.setTitle("User Feedback");
d.setContentView(R.layout.dialog_rating);
final RatingBar userRating = (RatingBar) d.findViewById(R.id.ratingBarHosp);
Button saveRating = (Button) d.findViewById(R.id.btnSaveRating);
saveRating.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
ratingToSave = userRating.getRating();
d.dismiss();
new updateRating().execute(); //This line is creating problem
}
});
d.show();
}
private void showUpdateAlert() {
AlertDialog.Builder dBuilder = new AlertDialog.Builder(Main.this);
dBuilder.setIcon(R.drawable.ic_dialog_alert);
dBuilder.setTitle("Already Rated!!");
dBuilder.setMessage("U have already rated this hospital.\n Do you want to update?");
dBuilder.setCancelable(false);
dBuilder.setPositiveButton("Yes",
new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
dialog.dismiss();
showRatingDialog();
}
});
dBuilder.setNegativeButton("No", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
dialog.dismiss();
}
});
AlertDialog quitAlert = dBuilder.create();
quitAlert.show();
}
}
class updateRating extends AsyncTask<String, String, String> {
@Override
protected void onPreExecute() {
super.onPreExecute();
}
protected String doInBackground(String... param) {
return null;
}
protected void onPostExecute(String... params) {
if(success==1)
Toast.makeText(getApplicationContext(), "Your feedback is saved successfully", Toast.LENGTH_LONG).show();
}
}
Вы можете это назвать, так или иначе отправьте сообщение об ошибке, (logcat) – nobalG
какая проблема она создает? –