Ich versuche, eine Reihe von Dialogmenüs zu erstellen, die Sie in Android durchlaufen können. (Im Grunde eine USSD-Interaktion in Android verspotten). Jedes Dialogfeld ist ein Textansichtsmenü mit nummerierten Auswahlmöglichkeiten, eine EditText-Ansicht, in der der Benutzer seine Nummer eingeben kann, und zwei Schaltflächen, Abbrechen und Senden (um zum nächsten Schritt zu gelangen).Text dynamisch in benutzerdefiniertem Layout aktualisieren Dialog, NPE - Android
Während ich meinen ersten Hauptmenüdialog anzeigen kann, wie ich möchte, habe ich eine Menge Probleme, meinen Text dynamisch zu aktualisieren. Wenn ich versuche, den TextView aufzurufen, um seinen Text festzulegen, gibt er mir weiterhin eine NPE, und ich bin mir nicht sicher, warum!
Hier ist der Anfangscode in meiner Tätigkeit ist (der Dialog erscheint sofort beim Starten)
TextView txtContent;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main_menu);
}
protected void onStart() {
super.onStart();
AlertDialog.Builder builder = new AlertDialog.Builder(this);
// Get the layout inflater
LayoutInflater inflater = this.getLayoutInflater();
// Inflate and set the layout for the dialog
// Pass null as the parent view because its going in the dialog layout
builder.setView(inflater.inflate(R.layout.main_menu_dialog, null))
// Add action buttons
.setPositiveButton(R.string.send, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int id) {
// Send number to next dialog
FirstTimeUse();
}
})
.setNegativeButton(R.string.cancel, new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int id) {
// End session
}
});
AlertDialog dialog = builder.create();
TextView txtContent = (TextView)findViewById(R.id.main_menu_options);
txtContent.setText(R.string.MainMenuText);
dialog.show();
}
Und hier ist das Layout für die generische Dialogansicht (jetzt Hauptmenü aufgerufen, aber umbenannt werden generisch, wenn ich das zur Arbeit bringen kann). Die Textview enthält keinen Text gerade jetzt, da ich es zu dynamisch setzen will:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="wrap_content"
android:layout_height="wrap_content">
<TextView
android:id="@+id/main_menu_options"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="16dp"
android:layout_marginLeft="4dp"
android:layout_marginRight="4dp"
android:layout_marginBottom="4dp" />
<EditText
android:id="@+id/choice"
android:inputType="textShortMessage"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="4dp"
android:layout_marginLeft="4dp"
android:layout_marginRight="4dp"
android:layout_marginBottom="16dp" />
Als ich das laufen, bekomme ich diesen Fehler:
java.lang.NullPointerException: Attempt to invoke virtual method 'void android.widget.TextView.setText(int)' on a null object reference
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2411)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2474)
Nichts Ich habe versucht, funktioniert, also würde jede Hilfe geschätzt werden! Vielen Dank!
Hey, das funktioniert! Ich danke dir sehr!! Weißt du zufällig, warum das funktioniert? Was ist der Unterschied zwischen dem separaten Erstellen einer Ansicht und dem, was ich oben hatte, was direkt aus den Android Dialog-Tutorials kam? – notchopra
Sie haben nach einer Textansicht innerhalb der Ansichtshierarchie für Aktivitäten (oder Fragmente) gesucht. Der Dialog hat jedoch seine eigene Hierarchieansicht (sogar ein separates Fenster, das angezeigt werden soll), also sollten Sie innerhalb des Letzteren suchen. –
Bekam es. Danke noch einmal! – notchopra