как закрыть диалоговое окно прогресса при переходе от одного занятия к другому с помощью кнопки «назад» и «вперед»? - PullRequest
1 голос
/ 04 января 2012

У меня есть 4 Действия в моем приложении для Android.Первый ведет ко второму, второму к третьему и т. Д. Каждое действие извлекает некоторые данные из сети. Это занимает некоторое время, поэтому я добавил диалоговое окно прогресса, чтобы пользователи знали об этом.Теперь проблема в том, что когда я нажимаю кнопку «Назад», диалог прогресса все еще там.Где я должен написать функцию dismiss (), чтобы закрыть это диалоговое окно прогресса?

PS: сбрасывает, когда я нажимаю кнопку назад дважды.Должен ли я написать увольнение на OnStart (), OnResume () или где ???

Вот код:

private void onFileClick(Option option) {

    ProgressDialog progressDialog = new ProgressDialog(this);
    progressDialog.setProgress(10);
    progressDialog.setMax(100);
    progressDialog.setProgressStyle(ProgressDialog.STYLE_SPINNER);
    progressDialog.setMessage("Loading Data...");
    progressDialog.show();
    Intent i;
        i = new Intent(this, ChannelVideoListActivity.class);   
        startActivity(i);
    progressDialog.dismiss();
} 

Ответы [ 4 ]

0 голосов
/ 04 января 2012

есть проблема в вашем потоке вызовов и отклонении индикатора выполнения.

Это должно быть:

  • приложение запущено
  • Запущено действие 2
  • Если есть сетевой вызов, показать индикатор выполнения
  • хочу закрыть индикатор выполнения и завершить действие

Или, как код:

ProgressDialog dialog = new ProgressDialog(this);
    dialog.setOnKeyListener(new OnKeyListener() {

        public boolean onKey(DialogInterface dialog, int keyCode, KeyEvent event) {
        if(keyCode == KeyEvent.KEYCODE_BACK)
        {
            finish();
            return true;
        }
            return false;
        }
    });

PS: НЕ запускайте индикатор выполнения перед запуском нового действия.Запустите упражнение, а затем запустите индикатор выполнения.

0 голосов
/ 04 января 2012

// для этого используем Async Task.позвоните по этой линии

new SomeTask(0).execute();


/** Inner class for implementing progress bar before fetching data **/

 private class SomeTask extends AsyncTask<Void, Void, Integer> 
    {
        private ProgressDialog Dialog = new ProgressDialog(yourActivityClass.this);
        @Override
        protected void onPreExecute()
        {

        Dialog.setMessage("downloading...");
        Dialog.show();
    }

    @Override
    protected Integer doInBackground(Void... params) 
    {
        //Task for doing something 

        return 0;
    }

    @Override
    protected void onPostExecute(Integer result)
        {

        if(result==0)
        {
//do some thing
Intent i = new Intent(this, ChannelVideoListActivity.class);   
        startActivity(i);

        }

// after completed finished the progressbar
        Dialog.dismiss();
    }
0 голосов
/ 04 января 2012

Предлагаю Вам написать ChannelVideoListActivity по-другому.

Возможно, вы вызываете функцию или пишете код для загрузки данных из Интернета, а затем показываете это или выполняете какую-то операцию извлечения данных.

Удалите все из onCreate() и поместите его в функцию AsyncTask doInBackGround() и в OnPreExecute из AsyncTask вызовите диалог прогресса и в onPostExecute() диалог отклонения.

Вызвать этот AsyncTask из onCreate () ChannelVideoListActivity после вызова метода setContentView () как new TaskClass().execute()

и просто вызовите ChannelVideoListActivity из предыдущего с намерением.

0 голосов
/ 04 января 2012

Попробуйте как показано ниже.

onBackPressed(){
   progressDialog.dismiss();
}
...