2010-12-05 3 views
0

Я хотел бы показать пользовательский диалог, а затем отобразить некоторые результаты для пользователя - это не проблема. Но я также хотел бы нарисовать визуальное представление данных по тексту.Рисование в диалоговом окне

Dialog dialog = new Dialog(this); 
    dialog.setContentView(R.layout.progress_overview); 
    dialog.setTitle(getString(R.string.progress_overview)); 

    TextView text = (TextView) dialog.findViewById(R.id.text); 
    text.setText("results..."); 

progress_overview.xml:

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
      android:id="@+id/layout_root" 
      android:orientation="vertical" 
      android:layout_width="fill_parent" 
      android:layout_height="fill_parent" 
      android:padding="10dp" 
      > 
<com.name1.name2.ProgressDrawableView android:id="@+id/progress_image" 
      android:layout_width="fill_parent" 
      android:layout_height="fill_parent" 
      android:layout_margin="10dp" 
      /> 
<TextView android:id="@+id/text" 
      android:layout_width="fill_parent" 
      android:layout_height="fill_parent" 
      android:textColor="#FFF" 
      /> 
</LinearLayout> 

Проблема заключается в том, если я делаю это так, я не могу получить доступ к методам моего ProgressDrawableView View, которые отображаются (с использованием findViewById возвращает нулевой указатель) ,

Не могли бы вы предложить решение или по-другому, если мой подход не так, пожалуйста? (Я новичок в android dev) Спасибо

+0

Вы пробовали предлагаемый подход? – Zelimir 2010-12-14 10:37:04

ответ

1

Вам нужно использовать LayoutInflater, чтобы раздуть вид, прикрепленный к вашему макету. Тогда это легко. Это было бы примерно так:

LayoutInflater inflater = (LayoutInflater) this.getSystemService(LAYOUT_INFLATER_SERVICE); 
View layout = inflater.inflate(R.layout.progress_overview, null); 

myProgressImage = (ProgressDrawableView) layout.findViewById(R.id.progress_image); 
mProgressText = (TextView) layout.findViewById(R.id.text); 

dialog.setContentView(layout); 
Смежные вопросы