Android: диалоговое окно Progress изменяет ProgressDialog.setMessage () во время загрузки - PullRequest
3 голосов
/ 23 июня 2011

Я надеялся, что кто-нибудь сможет помочь мне понять, как изменить диалог setmessage в диалоге прогресса с помощью всего лишь фиктивного таймера, который циклически перебирает массив строк или любым другим способом.Например, при загрузке он может сказать «Загрузка ... -> Строительство ... -> Рендеринг ... -> ЭСТ.как таймер на 1/2 секунды (это только для меня, я могу его адаптировать, используя обновление в реальном времени, как только я пойму, как изменить диалог.) Я использовал этот урок для потока выполнения минус код ориентации.Любые идеи?

спасибо!

Это не красиво, но я смог заставить его работать с этим:

public class BadBaconJoke extends Activity implements OnClickListener {
    ProgressDialog dialog;
    int increment;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.progressdialog);

        Button startbtn = (Button) findViewById(R.id.startbtn);
        startbtn.setOnClickListener(this);
    }

    public void onClick(View view) { 

        // get the increment value from the text box
        EditText et = (EditText) findViewById(R.id.increment);
        // convert the text value to a integer
        increment = Integer.parseInt(et.getText().toString());
        dialog = new ProgressDialog(this);
        dialog.setCancelable(true);
        dialog.setTitle("Loading...");
        dialog.setMessage("Almsot done!");
        // set the progress to be horizontal
        dialog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);

        // reset the bar to the default value of 0
        dialog.setProgress(0);

        // get the maximum value
        EditText max = (EditText) findViewById(R.id.maximum);
        // convert the text value to a integer
        final int maximum = Integer.parseInt(max.getText().toString());
        // set the maximum value
        dialog.setMax(maximum);
        // display the progressbar
        dialog.show();


        // create a thread for updating the progress bar
        Thread background = new Thread (new Runnable() {
           public void run() {
               try {


                   // enter the code to be run while displaying the progressbar.
                   //
                   // This example is just going to increment the progress bar:
                   // So keep running until the progress value reaches maximum value
                   while (dialog.getProgress()<= dialog.getMax()) {
                       // wait 500ms between each update
                       Thread.sleep(500);

                       // active the update handler
                       progressHandler.sendMessage(progressHandler.obtainMessage());


                   }
               } catch (java.lang.InterruptedException e) {
                   // if something fails do something smart
               }
           }
        });

        // start the background thread
        background.start();



    }

    // handler for the background updating
    Handler progressHandler = new Handler() {
        public void handleMessage(Message msg) {
            dialog.incrementProgressBy(increment);
            int x;
            x = dialog.getProgress();

            switch (x) {
            case 10:  dialog.setMessage("Gathering Data");      break;
            case 20:  dialog.setMessage("Parsing Results");      break;
            case 30:  dialog.setMessage("Builindg Data");        break;
            case 40:  dialog.setMessage("TeraForming");       break;
            case 50:  dialog.setMessage("Contacting Server");  break;
            case 60:  dialog.setMessage("Ping Back");  break;
            case 70:  dialog.setMessage("Processing");  break;
            case 80:  dialog.setMessage("Communicating with Device");  break;
            case 90:  dialog.setMessage("Populating");  break;
            case 100:  dialog.setMessage("Displaying Data:");  break;
            default: dialog.setMessage("..."); break;
        }

         if (x == 100){
             new AlertDialog.Builder(BadBaconJoke.this);
            dialog.setTitle("Complete");
            //.setMessage("Are you sure you want to exit?")
           // dialog.setButton(android.R.string.no, null);
            //.setMessage("Are you sure you want to exit?")
         }


        }
    };










}

Есть идеи, как заставить его работать свращение против процесса диалога?Когда я меняю dialog.setProgressStyle (ProgressDialog.STYLE_HORIZONTAL);to dialog.setProgressStyle (ProgressDialog.STYLE_SPINNER);

отображает только значение по умолчанию из регистра переключателя.

1 Ответ

3 голосов
/ 23 июня 2011

Вы можете использовать onProgressUpdated() для изменения сообщения, потому что этот метод выполняется в потоке пользовательского интерфейса.Тем не менее, это не дает вам возможности изменить сообщение за определенное время.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...