Проблема с прогресс-баром в Android - PullRequest
0 голосов
/ 20 июля 2011

Мое приложение содержало кнопку загрузки, и всякий раз, когда эта кнопка нажата, я хочу, чтобы отображался какой-нибудь индикатор выполнения, чтобы пользователь знал, что что-то происходит.Что я действительно хочу сделать, так это чтобы всякий раз, когда индикатор выполнения заканчивался, я хотел, чтобы всплыл тост.Кто-нибудь может направить меня с этим?Я был бы очень признателен за это.Заранее спасибо!

Вот код, который я использую:

public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);

        final ProgressDialog dialog = new ProgressDialog(MyActivity.this);
        dialog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);
        dialog.setMessage("Downloading...");
        dialog.setCancelable(true);
        dialog.setMax(200);
        dialog.setProgress(0);
        dialog.show();

        Thread t = new Thread(new Runnable(){
            public void run() {
                while(dialog.getProgress() < dialog.getMax())
                {
                    dialog.incrementProgressBy(1);
                    try{Thread.sleep(50);}catch(Exception e){/* no-op */}
                }
                dialog.dismiss();
            }
        });
        t.start();
    }

Ответы [ 4 ]

1 голос
/ 20 июля 2011

AsyncTask будет самым простым, но если вы непреклонны в использовании своего кода, вы можете добавить этот фрагмент после оператора dialog.dismiss ().

  runOnUiThread(new Runnable(){
        public void run() {
            Toast.makeText(YourClassName.this, "task finished", Toast.LENGTH_LONG).show();  
        }

  }); 

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

0 голосов
/ 20 июля 2011

Вы не можете запускать длинные задачи в потоке пользовательского интерфейса.Создайте фоновый поток с помощью асинхронной задачи, но вы не можете выполнить тост в фоновом потоке.

Асинхронная задача уведомит о завершении задачи.

Я думаю, что у асинхронной задачи есть следующие методы.

onBackground onProgressUpdate PreExecute PostExecute (поставить тост здесь)

0 голосов
/ 20 июля 2011

После dialog.dismiss ();написать

Toast.makeText(getApplicationContext(),"finish",Toast.LENGTH_LONG).show();
0 голосов
/ 20 июля 2011
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...