2014-11-19 4 views
0

Я пытаюсь запустить диалог прогресса, пока выполняется другой процесс, и я не могу этого сделать.Запустить диалог выполнения во время другого процесса

процесс, который я хочу запустить это:

public void Onclick_editar (View view) 
{ 
    float porc; 
    String repre; 
    try{ 
     porc = Float.parseFloat(edit_porcentaje.getText().toString()); 
     repre = edit_representante.getText().toString(); 
     try 
     { 
      Hilo hilo; 
      hilo = new Hilo(2, "UPDATE eleccion SET porcentaje="+porc+", delegados='"+repre+"' WHERE id="+idd); 
      hilo.start(); 
      while(hilo.isAlive()){} 

      hilo = new Hilo(4, idd); 
      hilo.start(); 
      while(hilo.isAlive()){} 
      Toast.makeText(this, "¡Actualizada con éxito!", Toast.LENGTH_SHORT).show(); 

     } 
     catch(SQLException e) 
     { 
      Toast.makeText(this, "Error: Fallo en la base de datos", Toast.LENGTH_SHORT).show(); 
     }     
    }catch(Exception e) 
    { 
     Toast.makeText(this, "Rellena todos los campos", Toast.LENGTH_SHORT).show(); 
    } 
} 

это запуск при нажатии на кнопку. благодаря!

EDIT /////////////

хорошо я решил проблему с этим кодом !!

public void button(View v) { 

    new waiting().execute(); 

}

class waiting extends AsyncTask<String, Void, Boolean> { 

     ProgressDialog progressdialog; 
     protected void onPostExecute(Boolean result) { 
      super.onPostExecute(result); 
      progressdialog.dismiss(); 

     } 

     protected void onPreExecute() { 
      super.onPreExecute(); 
      // Shows Progress Bar Dialog and then call doInBackground method 
      progressdialog = new ProgressDialog(Tab_adminver_modificar_eleccion.this); 
      progressdialog.setTitle("Processing...."); 
      progressdialog.setMessage("Please Wait....."); 
      progressdialog.setCancelable(false); 
      progressdialog.show();   
     } 
    @Override 
    protected Boolean doInBackground(String... params) { 
     try { 
           Thread.sleep(5000); 

          } catch (Exception e) { 

          } 
     return null; 
    } 

    } 

, но я не использую тост в методе doInBackground (FC)

+0

PLS опубликовать код, который вы пробовали и не запускали, как ожидалось, цель диалога программы в основном упоминается в вашем вопросе, может ссылаться на [пример выполнения по умолчанию] (http://examples.javacodegeeks.com/android/ core/ui/progressdialog/android-progressdialog-example /), [возможно дублировать] (http://stackoverflow.com/questions/9814821/show-progressdialog-android) – user2450263

+0

извините, я не понимаю вас, я говорю по-английски бит –

+0

попытайтесь запустить диалог прогресса - опубликуйте этот код, обратитесь к ссылкам в приведенном выше комментарии. – user2450263

ответ

0

вы можете попробовать, как этот ваш процесс будет работать в фоновом режиме и диалог прогресса будет выполнение, как хорошо, но когда процесс завершится диалог прогресса уволят ..

public class asynTask1 extends AsyncTask<String, Void, Boolean> { 

    public asynTask1 (MainActivity activiy) { 
     context = activiy; 
    } 

    @Override 
    protected void onPostExecute(Boolean result) { 

     super.onPostExecute(result); 

     progressdialog.dismiss(); 




    } 

    @Override 
    protected void onPreExecute() { 

     super.onPreExecute(); 
     progressdialog = new ProgressDialog(Splash.this); 
     progressdialog.setTitle("Processing...."); 
     progressdialog.setMessage("Please Wait....."); 
     progressdialog.setCancelable(false); 
     progressdialog.show(); 

    } 

    @Override 
    protected Boolean doInBackground(String... params) { 

    // do process 


} 

U можно назвать onclick или также может onCreate .. это лучше сделать отдельный класс для asyntask1 и писать new asynTask1(MainActivity.this).execute(); где вы хотите назвать это ..

я надеюсь, что это будет помогает ...

+0

Можно ли назвать этот класс моим методом onclik? –

+0

см. Мой отредактированный код .. – user

+0

У меня есть ошибки в: контекст не может быть разрешен переменной progressdialog не может быть разрешен. Всплеск не может быть разрешен к типу –

1

Значит, вы ждете hilo, чтобы закончить в этой строке: while(hilo.isAlive()){}?

Используйте AsyncTask вместо этого, чтобы использовать его onPostExecute

+0

Можете ли вы показать мне, как это сделать в примере, пожалуйста? Я не слишком разбираюсь в asyncTask, спасибо –

+0

@AitorRamosPajares Я боюсь, что не скоро, я работаю сейчас. Я буду гуглингом для вас :) –

+0

@AitorRamosPajares это довольно просто с хорошим объяснением и исходным кодом: http: // programerguru.com/android-tutorial/android-asynctask-example/Просто комментарий, если у вас есть некоторые вопросы –

0

Если цель состоит в том, чтобы показать ProgressDialog, то вы можете использовать эту функцию для отображения прогресса dialog-

public static void showProgressLoader(Context context, int duration) 
{ 
    final ProgressDialog dialog = ProgressDialog.show(context, "", "Loading..."); 
    dialog.show(); 

    Handler handler = new Handler(); 
    handler.postDelayed(new Runnable() 
    { 
     public void run() 
     { 
      dialog.dismiss(); 
     } 
    }, duration); 
} 

В этом finction, проход контекст и продолжительность в миллисекундах, для которых вы хотите показать, после этой продолжительности он сам будет распущен.

+0

да, но я не знаю, какой длительности для другого процесса, я хочу, чтобы этот диалог был закрыт, когда mysql консультироваться с fnish. –

+0

Теперь вы можете пройти от 2 до 3 секунд, но в этом случае вы должны вызвать dialog.dismiss() в конце функции Onclick_editar (View view). –

+0

У меня есть ошибки в: контекст не может быть разрешен переменной progressdialog не может быть разрешен Всплеск не может быть разрешен к типу –

0
public void launchRingDialog(View view) { 

    final ProgressDialog ringProgressDialog = ProgressDialog.show(MainActivity.this, "Please wait ...", "Downloading Image ...", true); 

    ringProgressDialog.setCancelable(true); 

    new Thread(new Runnable() { 

     @Override 

     public void run() { 

      try { 

       **// the MYSql consultation should be here?** 

      } catch (Exception e) { 



      } 

      ringProgressDialog.dismiss(); 

     } 

    }).start(); 
Смежные вопросы