Можно ли изменить стиль, сообщение и заголовок PD на лету (а не из потока пользовательского интерфейса)?
Я хочу сделать следующее.Первый раз PD отображается в STYLE_SPINNER, поскольку выглядит как бесконечный прогресс, и показывает сообщение, информирующее пользователя о том, что приложение ищет 4 чего-то (некоторый экземпляр обновления 4).И когда он обнаружил, что что-то должен сделать что-то с ним (установить его).В этот момент я хочу показать Горизонтальный стиль PD, так как он действительно отображает состояние прогресса, а не состояние в виде счетчика.
В любом случае я получил NullPointerException при попытке PD.setMax ().PD не является нулевым, поэтому я не могу понять, что происходит.
Это внутренний класс в моем классе Activity:
private class RestoreDBTask extends AsyncTask <Void, Void, String>
{
private ProgressDialog dialog;
private Handler handler;
@Override
protected void onPreExecute()
{
this.dialog = new ProgressDialog(SplashActivity.this);
this.dialog.setTitle(getString(R.string.progress_wait));
this.dialog.requestWindowFeature(Window.FEATURE_PROGRESS);
// this.dialog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);
this.dialog.setProgress(0);
this.dialog.show();
handler = new Handler() {
@Override
public void handleMessage(Message msg) {
RestoreDBTask.this.dialog.hide();
switch (msg.what) {
case 0:{
RestoreDBTask.this.dialog.setProgressStyle(ProgressDialog.STYLE_SPINNER);
break; }
case 1: {
RestoreDBTask.this.dialog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);
break; }
case -1: {
RestoreDBTask.this.dialog.setMessage(getResources().getString(R.string.progress_db_installing));
break; }
case -2: {
RestoreDBTask.this.dialog.incrementProgressBy(1);
break; }
default: {
Log.i(APP_TAG,""+RestoreDBTask.this.dialog.getMax());
RestoreDBTask.this.dialog.setMax(msg.what); }
}
RestoreDBTask.this.dialog.show();
}
};
}
@Override
protected String doInBackground(Void... params)
{
mDBHelper.initDB(dialog,handler);
return "";
}
@Override
protected void onPostExecute(String result)
{
dialog.dismiss();
startNextActivity();
}
}
метод mDBHelper.initDB () использует обработчик.sendEmptyMessage () вызывает с некоторыми значениями int, предполагая, что если msg.what> 1, это максимальное значение для PD.
Также я не могу понять, почему PD не показывает состояние прогресса, если его стиль - STYLE_SPINNER?Если я изменю его на STYLE_HORIZONTAL, он будет работать нормально ...