Öffnet ein eigenes Dialogfeld, nachdem Sie auf eine Schaltfläche Android
Möchte ich um zu öffnen ein benutzerdefinierten dialog nach dem Klick auf eine Schaltfläche. Der code der Schaltfläche in XML ist:
<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" />
Nachdem klicken Sie auf die Schaltfläche öffnen Sie die Methode "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();
}
Habe ich versucht, dies auszuführen cose aber der Absturz auf den textViewUser.setText
Irgendwelche Ideen?
- stackoverflow.com/questions/16534888/...
- posten Sie Ihre benutzerdefinierten Dialogfeld layout
- verwenden Aktivität Kontext-Dialog dialog = new Dialog(ActivityName.this);
Du musst angemeldet sein, um einen Kommentar abzugeben.
Können Sie findViewById von der aktuellen Ansicht-Hierarchie festlegen, um die Aktivität.
In Ihrem Fall sollten Sie die Aktivität Kontext und auch dialog-Objekt zu initialisieren textview.
Können Sie auch entfernen, die final-modifier.
Wenn zu call activity Kontext und Anwendungskontext?
Überprüfen Sie den obigen link und die Antwort von commomsware zu wissen, Wann Sie zu verwenden Aktivität, Kontext und Anwendungskontext.
Sollten Sie nicht verwenden die Anwendung den Kontext für die Erstellung von Dialogen/Views.
Ändern:
Zu diesem:
Waqas ist richtig, aber außerdem überschreiben Sie die
textViewUser
Sie erstellt haben, programmatisch: "textViewUser = new TextView(getApplicationContext());
" mit einer Instanz gefunden, die in Ihrer view-Hierarchie: "textViewUser = (TextView) findViewById(R.id.textBrand);
".Scheint es, dass
textViewUser
null ist.Haben Sie versucht, um das TextView aus der Sicht
dialogbrand_layout
? Wenn ja, es ist sicher, dass IhrtextViewUser
ist null, weil das TextView nicht in Ihre aktuelle Ansicht-Hierarchie.Sind Sie sicher, dass textBrand textview innerhalb der contentView, die Sie für Aktivität.
findViewById Aufruf wird null zurückgeben.
Wenn R. layout.dialogbrand_layout hat textBrand textview ersetzen Sie dann die oben genannte Zeile mit