0

Я бы хотел открыть пользовательское диалоговое окно после нажатия кнопки. Код кнопки в XML является:Откройте пользовательское диалоговое окно после нажатия кнопки Android

<Button 
      android:id="@+id/Button1" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:layout_marginLeft="@dimen/BorderMargin" 
      android:layout_marginRight="@dimen/BorderMargin" 
      android:background="#D2D2D2" 
      android:onClick="openDialog1" 
      android:padding="17dip" 
      android:text="@string/ButtonAdd" /> 

После нажатия, кнопка открытие метода «openDialog1»:

public void openDialog1(View view) { 

    final Dialog dialog = new Dialog(this.getApplicationContext()); 
    dialog.setContentView(R.layout.dialogbrand_layout); 
    dialog.setTitle("Hello"); 

    TextView textViewUser = new TextView(getApplicationContext()); 
    textViewUser = (TextView) findViewById(R.id.textBrand); 
    textViewUser.setText("Hi"); 

    dialog.show(); 
} 

Я пытался выполнить эту Co, но крах приложения на textViewUser.setText

Любые идеи?

+0

http://stackoverflow.com/questions/16534888/how-can-i-create-my-own-theme-for-alertdialog/16534981#16534981 – Sam

+0

разместить свой собственный диалог макет – Raghunandan

+0

использовать диалог контекста деятельности Dialog = новый Диалог (ActivityName.this); – Raghunandan

ответ

2

Вы можете findViewById текущей зрения иерархии, установленной для деятельности.

В вашем случае вы должны использовать контекст активности, а также использовать объект диалога для инициализации textview.

Вы также можете удалить последний модификатор.

public void openDialog1(View view) { 
Dialog dialog = new Dialog(ActivityName.this); 
dialog.setContentView(R.layout.dialogbrand_layout); 
dialog.setTitle("Hello"); 
TextView textViewUser = (TextView) dialog.findViewById(R.id.textBrand); 
textViewUser.setText("Hi"); 
dialog.show(); 
} 

When to call activity context OR application context?

Проверьте ссылку выше, и ответ на commomsware, чтобы знать, когда использовать контекст деятельности или контекста приложения.

0

Вам не следует использовать Контекст приложения для создания диалоговых окон/представлений.

Изменение:

final Dialog dialog = new Dialog(this.getApplicationContext()); 

Для этого:

final Dialog dialog = new Dialog(view.getContext()); 
//or 
final Dialog dialog = new Dialog(this); //'this' refers to your Activity 
0

Waqas прав, но кроме того, вы переопределить textViewUser вы создали программно: "textViewUser = new TextView(getApplicationContext());" с экземпляром найденного в иерархии вида: " textViewUser = (TextView) findViewById(R.id.textBrand); ".

Кажется, что textViewUser - null. Вы пытались получить этот TextView с точки зрения dialogbrand_layout? Если да, то убедитесь, что ваш textViewUser является нулевым, потому что этот TextView не находится в вашей иерархии curent view.

0

Вы уверены, что textBrand textview находится внутри contentView, который вы установили для активности.

textViewUser = (TextView) findViewById(R.id.textBrand); 

вызов findViewById возвращает null. Если R.layout.dialogbrand_layout имеет textBrand TextView замените выше линии с

textViewUser = (TextView)dialog.findViewById(R.id.textBrand);