2011-08-10 1 views
1

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

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); 

Я узнал в отладчике, что приложение аварии на второй линии, поскольку прогресс объекта = нуль, пустой Zipp, Nuttin :(

Похоже, что прогрессбар, когда доке диалог не ... :(, доступную

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

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

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

+0

Вы пробовали раздуть макет сначала, а затем искали индикатор выполнения, а затем вызывали Dialog.setContentView (View)? – devconsole

+0

Я все еще довольно новичок в Android-разработчике, не могли бы вы быть более конкретными? Thnx! – Dennis

ответ

1

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

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

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

progress = (ProgressBar)mSplashDialog.findViewById(R.id.progressbar_Horizontal); 
+0

Спасибо! Это оно! е * ск! Это дает мне отличную внутреннюю информацию о том, как писать в будущем! glorifiedHacker для президента! : D – Dennis