0

我想創建一個警報對話框生成器內的進度條,並嘗試更新進度,當我點擊按鈕使用線程和處理程序.....但每次我點擊它崩潰的開始按鈕....無法更新裏面的進度條和警報對話框生成器

package com.example.progressbar_thread; 

import android.app.Activity; 
import android.app.AlertDialog; 
import android.os.Bundle; 
import android.os.Handler; 
import android.view.View; 
import android.view.View.OnClickListener; 
import android.widget.Button; 
import android.widget.ProgressBar; 

public class MainActivity extends Activity implements OnClickListener { 

Button Start; 
int i = 0; 
Handler myHandler = new Handler(); 
ProgressBar myProgressBar; 
@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 
    Start = (Button) findViewById(R.id.StartButton); 
    Start.setOnClickListener(this); 
} 

@Override 
public void onClick(View v) { 
    // TODO Auto-generated method stub 
    // Alert dialog builder section 
    AlertDialog.Builder myDialogBuilder = new AlertDialog.Builder(this); 
    myDialogBuilder.setTitle("Progress..."); 
    View ProgressView = getLayoutInflater().inflate(R.layout.progressbar, 
      null); 
    myProgressBar=(ProgressBar)findViewById(R.id.ProgressBar); 

    myDialogBuilder.setView(ProgressView); 
    myDialogBuilder.create().show(); 

    new Thread(new Runnable() { 

     @Override 
     public void run() { 

      // TODO Auto-generated method stub 
      while (i < myProgressBar.getMax()) { 

       myHandler.post(new Runnable() { 

        @Override 
        public void run() { 
         // TODO Auto-generated method stub 
         myProgressBar.setProgress(i); //Updading progress 

        } 

       }); 

       i++; 

      } 

     } 
    }).start(); 

    } 

    }enter code here 
+0

請從logcat中添加堆棧跟蹤,現在它是不可能知道爲什麼它實際上沒有崩潰細閱讀你的代碼。 – chriskvik 2015-02-18 00:46:56

回答

0

你必須改變你的代碼有點....

你必須改變以下行

View ProgressView = getLayoutInflater().inflate(R.layout.progressbar, 
     null); 
myProgressBar=(ProgressBar)findViewById(R.id.ProgressBar); 

myDialogBuilder.setView(ProgressView); 
myDialogBuilder.create().show(); 

到----

View ProgressView = getLayoutInflater().inflate(R.layout.progressbar, 
     null); 
myProgressBar=(ProgressBar)ProgressView.findViewById(R.id.ProgressBar); 

myDialogBuilder.setView(myProgressBar); 
myDialogBuilder.create().show(); 

我希望這將有助於你.....

+0

謝謝Raj .... It Worked ... – user3501727 2015-02-18 21:11:50