[ERLEDIGT] Existierendes Objekt immer NULL

FalkeNr1

FalkeNr1

Neues Mitglied
3
Hi,
ich habe ein kleines Problem... Eigentlich denke ich, dass das nur ein ganz simpler Fehler ist, auf den ich nur momentan nicht komme:
Ich habe einen AlertDialog mit CustomLayout erstellt. In dem Layout befinden sich unter anderem auch einige Spinner. Der Dialog lässt sich ganz normal anzeigen, jedoch kann ich die Spinner anscheinend nicht auslesen und so mit Inhalt bestücken, da diese immer NULL sind.
Folgendes sind meine Codeschnipsel: (Markiertes Objekt ist null)
Code:
AlertDialog.Builder builder = new AlertDialog.Builder(MainActivity.this);
        builder.setTitle("Anpassen");
        builder.setView(R.layout.dialog_anpassen);
        builder.setPositiveButton("Annehmen", new DialogInterface.OnClickListener() {
            @Override
            public void onClick(DialogInterface dialogInterface, int i) {
                dialogInterface.dismiss();
            }
        });
        builder.setNegativeButton("Abbrechen", new DialogInterface.OnClickListener() {
            @Override
            public void onClick(DialogInterface dialogInterface, int i) {
                dialogInterface.dismiss();
            }
        });
        AlertDialog dialog = builder.create();

        Spinner spinnerAnpassenBoden = (Spinner)findViewById(R.id.anpassenSpinnerBoden);
        String[] boeden = {"Stein", "Beton", "Fliesen"};
        ArrayAdapter<String> adapterBoeden = new ArrayAdapter<String>(MainActivity.this, android.R.layout.simple_spinner_item, boeden);
        adapterBoeden.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
        spinnerAnpassenBoden.setAdapter(adapterBoeden);

        dialog.show();

Code:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical" android:layout_width="match_parent"
    android:layout_height="match_parent">

    <TextView
        android:id="@+id/textView"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_marginLeft="10dp"
        android:layout_marginRight="10dp"
        android:text="Boden:"
        android:textColor="@android:color/black"
        android:textSize="18sp"
        android:textStyle="bold" />

    <Spinner
        android:id="@+id/anpassenSpinnerBoden"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_marginLeft="10dp"
        android:layout_marginRight="10dp" />

    <TextView
        android:id="@+id/textView2"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_marginLeft="10dp"
        android:layout_marginRight="10dp"
        android:text="Tisch:"
        android:textColor="@android:color/black"
        android:textSize="18sp"
        android:textStyle="bold" />

    <Spinner
        android:id="@+id/anpassenSpinnerTisch"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_marginLeft="10dp"
        android:layout_marginRight="10dp" />

    <TextView
        android:id="@+id/textView3"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_marginLeft="10dp"
        android:layout_marginRight="10dp"
        android:text="Münze:"
        android:textColor="@android:color/black"
        android:textSize="18sp"
        android:textStyle="bold" />

    <Spinner
        android:id="@+id/anpassenSpinnerMuenze"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_marginLeft="10dp"
        android:layout_marginRight="10dp" />

</LinearLayout>

Würde mir echt weiterhelfen, wenn jemand den Fehler sieht :)
Solltet ihr mehr Informationen brauchen, immer raus damit!

Mit freundlichen Grüßen
Falke
 
Hallo Falke,

das was du da gebaut hast, kann nicht funktionieren , weil du für deine Spinner kein inflate auf deinen eigentliches Layout hast.

Woher soll also

Code:
Spinner spinnerAnpassenBoden = (Spinner)findViewById(R.id.anpassenSpinnerBoden);

wissen , auf welches Layout du dich beziehst ?

P.S Es gibt einige Workarounds dafür , weit eleganter wäre ein Dialog gewesen,
anstatt Alertdialog
 
Zuletzt bearbeitet:
  • Danke
Reaktionen: FalkeNr1
Zu dem Dialog: Ich hatte tatsächlich vor dem Alertdialog einen Dialog. Dort waren im Layout dann noch Buttons und ein Titel enthalten, jedoch hatte ich dort das selbe Problem mit den Buttons wie jetzt mit den Spinnern. Dass das daraus hinaus läuft, ist mir aber erst während des Umbauens aufgefallen. ;-)
Sollte ich das mit den Spinnern geregelt bekommen, spricht ja auch nichts mehr gegen einen Rückbau.

Allerdings ist dazu die Voraussetzung, dass ich also das Inflate auf das View kriege. Hast du zufälligerweise ein Beispiel parat? Würde mir sehr helfen, da ich gerade nicht genau weiß, was ich machen muss. In den Beispielen die ich gefunden habe, war das ebend immer so dargestellt, wie ich es umgesetzt habe.

Aber Danke schon mal :)
 
Funktioniert super, danke!
Könntest du mir noch erklären, was die Funktion des Inflaters ist?
Also sozusagen den Unterschied zwischen
Code:
LayoutInflater inflater = LayoutInflater.from(MainActivity.this);
        final View view = inflater.inflate(R.layout.dialog_anpassen, null);
und
Code:
final View view = findViewById(R.layout.dialog_anpassen);
Das ist mir noch nicht ganz so eingeleuchtet :)

Danke aber auf alle Fälle schon mal für die Hilfe!
 
Ist ganz einfach:

findViewByID() bezieht sich auf die MainActivity. Das heißt die Methode sucht eine View im Layout der MainActivity.

view.findViewByID sucht einen View in view (Layout).
 
  • Danke
Reaktionen: FalkeNr1
DAS ist einleuchtend ^^ Danke!
 

Ähnliche Themen

F
Antworten
4
Aufrufe
912
swa00
swa00
L
  • LHomme
Antworten
1
Aufrufe
1.167
jogimuc
J
Zurück
Oben Unten