Android; Индикатор выполнения с настраиваемым диалогом - PullRequest
1 голос
/ 11 августа 2011

У меня есть собственный диалог, отображающий заставку;

mSplashDialog = new Dialog(MyActivity.this,R.layout.splash);
mSplashDialog.setContentView(R.layout.splash);
mSplashDialog.setCancelable(true);
mSplashDialog.show();

В макете-заставке есть индикатор ProgressBar;

LinearLayout
android:id="@+id/LinearLayout01"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
xmlns:android="http://schemas.android.com/apk/res/android"
android:background="@drawable/picture_splash"
ProgressBar
android:layout_width="fill_parent"
android:layout_height="wrap_content"
style="?android:attr/progressBarStyleHorizontal"
android:id="@+id/progressbar_Horizontal"
android:max="100"
LinearLayout

Но когда я пытаюсь сослаться на индикатор выполнения,

        progress = (ProgressBar) findViewById(R.id.progressbar_Horizontal);
        progress.setMax(100);

Я имеюобнаружил в отладчике, что приложение вылетает во второй строке, потому что объект progress = null, пустой zipp, nuttin: (

Похоже, что индикатор выполнения, когда он закреплен в диалоговом окне, недоступен ...: (

Кто-нибудь знает способ обойти это?

ProgresDialog не вариант, потому что вы не можете настроить его ...

Спасибо, ребята!

1 Ответ

1 голос
/ 11 августа 2011

Убедитесь, что вы вызываете findViewById () в правильном контексте. Например, то, что у вас сейчас есть, эквивалентно:

progress = (ProgressBar)this.findViewById(R.id.progressbar_Horizontal);

Если mSplashDialog не является частью иерархии представлений для «this», findViewById никогда не найдет ваш progressBar. Возможно, вы хотите что-то вроде:

progress = (ProgressBar)mSplashDialog.findViewById(R.id.progressbar_Horizontal);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...