2013-04-17 2 views
0

После нажатия ok в диалоговом окне я должен получить данные из другого места. поэтому я использовал класс Asynctask. Реализация ниже. Но после первого нажатия «ОК» я не получу индикатор прогресса. Я только получить его после второго нормально нажимается (в основном, когда все линии внутри кнопки метод OnClick выполняется ... Что я должен сделать, чтобы получить индикатор сразу после нажатия первой нормально?Asynctask и промежуток времени выполнения

confirmPath= (Button) findViewById(R.id.confirmPath); 
      confirmPath.setOnClickListener(new OnClickListener() { 


      @Override 
      public void onClick(View arg0) { 

         construction 
         AlertDialog.Builder builder = new AlertDialog.Builder(Destination.this); 
         builder.setMessage("Press 'Ok' ") 
           .setPositiveButton("Ok", new DialogInterface.OnClickListener() { 
            public void onClick(DialogInterface dialog, int id) { 

             LoadData task = new LoadData(); 
             task.execute(); 


                       AlertDialog alertDialog = new AlertDialog.Builder(Destination.this).create(); 
            alertDialog.setTitle("Attention!"); 
            alertDialog.setMessage(" Pay attention"); 
            alertDialog.setButton("OK", new DialogInterface.OnClickListener() { 
              public void onClick(DialogInterface dialog, int which) { 
              } 
             }); 

             alertDialog.show(); 

            } 
           }) 
           .setNegativeButton("Cancel", new DialogInterface.OnClickListener() { 
            public void onClick(DialogInterface dialog, int id) { 
             // do nothing 
            } 
           }); 
         builder.create(); 
         builder.show(); 

И это класс AsynkTask:

public class LoadData extends AsyncTask<Void, Void, Void> { 
     ProgressDialog progressDialog; 
     //declare other objects as per your need 
     @Override 
     protected void onPreExecute() 
     { 
      progressDialog= ProgressDialog.show(Destination.this, "Progress Dialog Title Text","Please wait", true); 

      //do initialization of required objects objects here     
     };  
     @Override 
     protected Void doInBackground(Void... params) 
     { 

       ReadFromFile readFromFile= new ReadFromFile(); 
       readFromFile.ReadAllData("Data"); 
       //some other tasks to do 

      return null; 
     }  
     @Override 
     protected void onPostExecute(Void result) 
     { 
      super.onPostExecute(result); 
      progressDialog.dismiss(); 
     }; 
    } 

ответ

0

Поместите этот код вне AlertDialogBuilder:

LoadData task = new LoadData(); 
task.execute(); 

Новый код должен выглядеть следующим образом:

@Override 
      public void onClick(View arg0) { 


             LoadData task = new LoadData(); 
             task.execute(); 


         construction 
         AlertDialog.Builder builder = new AlertDialog.Builder(Destination.this); 
         builder.setMessage("Press 'Ok' ") 
           .setPositiveButton("Ok", new DialogInterface.OnClickListener() { 
            public void onClick(DialogInterface dialog, int id) { 


                       AlertDialog alertDialog = new AlertDialog.Builder(Destination.this).create(); 
            alertDialog.setTitle("Attention!"); 
            alertDialog.setMessage(" Pay attention"); 
            alertDialog.setButton("OK", new DialogInterface.OnClickListener() { 
              public void onClick(DialogInterface dialog, int which) { 
              } 
             }); 

             alertDialog.show(); 

            } 
           }) 
           .setNegativeButton("Cancel", new DialogInterface.OnClickListener() { 
            public void onClick(DialogInterface dialog, int id) { 
             // do nothing 
            } 
           }); 
         builder.create(); 
         builder.show(); 
+0

Но мне нужны данные, которые нужно отправить после того, как я нажал первый ok на alertdialog. Но теперь по решению ура я получу его после того, как я нажал confirmPath, который на один шаг раньше .., который неверен –

+0

удалите диалоговое окно предупреждения. Я не понимаю, зачем вам нужен диалог после нажатия кнопки. – John

+0

Icannot удалите его. это часть предупреждающих сообщений, которые мы должны предоставить пользователю. см. ответ –

0

использовать этот код

private class NetworkDelegate extends AsyncTask<String, Void, String> { 

    private ProgressDialog Dialog = new ProgressDialog(MainActivity.this); 

    protected String doInBackground(String... pass) { 

     try { 


      //userid is getting from webservice    

     return userid; 

     } catch (Exception e) { 

      System.out.println(e); 
     } 




    } 

    protected void onPostExecute(String result) { 

     Dialog.dismiss(); 

     if (result == null) { 
      tv.setText("Enter Your Password Correctly"); 
      pwet.setFocusable(true); 

     } else { 



     } 

    } 

    protected void onPreExecute() { 

     Dialog.setMessage("Loading..."); 
     Dialog.show(); 

    } 

} 
0

я должен поставить второй alertdialog также в AsyncTask onPostExecute методом. то у меня есть прогрессбар, прежде чем, очевидно,

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