2014-12-12 4 views
0

Я использую внутренний класс 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(); 


    } 


} 
+3

Вы можете это назвать, так или иначе отправьте сообщение об ошибке, (logcat) – nobalG

+0

какая проблема она создает? –

ответ

0

так что вы можете сделать это:

updateRating data = new updateRating(); 
    data.execute(); 
+0

И как это имеет значение? –

Смежные вопросы