如何在Android中正确实现progressBar?

sar*_*ath 2 android

现在我正在做一个Android应用程序.在我的应用程序中,我必须从json页面获取数据.此操作需要时间延迟.所以我必须显示进度条,直到提取过程完成.我使用以下代码显示进度条.

 public void onCreate(Bundle savedInstanceState) {
//somecode
ProgressDialog progressBar = new ProgressDialog(this);
     progressBar.setCancelable(true);
      progressBar.setMessage("Loading");
      progressBar.show();
      Thread thread = new Thread(this);
      thread.start();

}
 public void run() {
    flag=GetFixtureDetailsJsonFunction();
    handler.sendEmptyMessage(0);
}
protected boolean GetFixtureDetailsJsonFunction() {
//json parsing code
return true
}
private Handler handler = new Handler() {
    @Override
    public void handleMessage(Message msg) {
        if (flag==true) {
            progressBar.dismiss();
        }


    }
};
Run Code Online (Sandbox Code Playgroud)

使用此代码我得到exception.android.view.ViewRoot $ CalledFromWrongThreadException:只有创建视图层次结构的原始线程才能触及其视图.

Has*_*ukh 5

AsyncTask是从xml或数据库获取响应的最佳方式.试试这样,

private class DownloadQuestion extends AsyncTask<String, Void, String> 
    {           

        @Override
        protected void onPreExecute() 
        {

            pd = ProgressDialog.show(Activity_SplashScreen.this, "","Please wait...", true,false);                    

            super.onPreExecute();
        }

        @Override
        protected String doInBackground(String... urls) 
        {
            //Write background code here Code 
            return "";
        }

        @Override
        protected void onPostExecute(String response1) 
        {
            //Some Code.....

            if (pd != null && pd.isShowing())
                pd.dismiss();

        }
    }
Run Code Online (Sandbox Code Playgroud)