开发者

Android: Progress Dialog change ProgressDialog.setMessage() while loading

I was hoping someone could help me figure out how to change the setmessage dialog in a progress dialog with just a dummy timer that cycles through either an array of strings or any other way. For example While its loading it could say Loading... -> Building... -> Rendering... -> ect. on like a 1/2 sec timer (this is just for me play with it I can adapt it use real-time updating once I figure out how to change the dialog.) I've been using this tutorial for the progress thread minus the orientation code. Any ideas?

thanks!

It's not pretty but I was able to get it to work with this:

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 p开发者_运维技巧rogressbar
        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?")
         }


        }
    };










}

Any ideas how to get it work with a spinner vs a process dialog? When I change dialog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL); to dialog.setProgressStyle(ProgressDialog.STYLE_SPINNER);

it only displays the default from the switch case.


You can use onProgressUpdated() in order to change the message, because this method is run on the UI Thread. Though, it doesn't give you the opportunity to change the message on the particular amounts of time.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜