un-inflated view - npe?

Chaoz

Chaoz

Fortgeschrittenes Mitglied
13
kurzum:

wenn ich eine View aus einer xml heraus laden und in einem dialog anzeigen will, kriege ich eine NullPointerException weil die view ja noch nicht existiert.

auf den (Dialog) Builder rufe ich .setView(view) auf, die gui-elemente aus der xml werden nicht angezeigt und ich bekomme eine NPE sobald ich auf die komponenten zugreifen will.

...irgendwelche Ideen? ^^

LG
Chaoz
 
Keine Haende - keine Keckse ;)
Poste mal deinen Quellcode.
 
ko5tik schrieb:
Keine Haende - keine Keckse ;)
Poste mal deinen Quellcode.
naja.. eigtl ungern.. aber... =p ...

Code:
final Builder oBuilder = new AlertDialog.Builder(this);
TableLayout oTable = (TableLayout) findViewById(R.id.DialogTable);
oBuilder.setView(oTable);

final EditText oNameText = (EditText) findViewById(R.id.NameText);
oNameText.setPadding(10, 5, 10, 10);      [B] //NPE[/B]
...xml...
Code:
<TableLayout android:layout_width="wrap_content"
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_height="wrap_content" android:id="@+id/DialogTable">

    <TableRow android:id="@+id/NameRow" android:layout_width="wrap_content"
        android:layout_height="wrap_content">
        <EditText android:id="@+id/NameText" android:layout_width="wrap_content"
            android:layout_height="wrap_content" android:maxLength="50"/>
    </TableRow>
</TableLayout>
nur weil die view im xml ist, heisst das nicht, dass sie schon erzeugt wurde. Normalerweise geschieht das über setContentPane, aber das kann ich nicht auf einen Dialog aufrufen.

Vorschläge?
 
dein findViewById(() bezieht sich auf die Activity, und nicht auf Dialog
(also: nix da und NPE )

An deiner Stelle würde ich oBuilder.findViewById() verwenden
 
gleicher fehler =p

hab jetzt n
Code:
Dialog oDlg = oBuilder.create();
und n "oDlg.findViewById( ..)" drin... trotzdem noch NPE....

sollte ich vorher
Code:
oDlg.setcontentView(oTable);
aufrufen, krieg ich da die NPE...
 
Dann hast du Dialogkreation versiebt ;)

Schenke ich dir:
Code:
        final View nameEntryView = LayoutInflater.from(this).inflate(R.layout.highscore_entry_dialog, null);
        nameEntryField = (TextView) nameEntryView.findViewById(R.id.username_edit);

        // create dialog for saving highscore
        saveHighcoreDialog = (new AlertDialog.Builder(this)).setMessage(R.string.doSaveHighscoreQuestion)
                .setPositiveButton(android.R.string.yes, new DialogInterface.OnClickListener() {
                    public void onClick(DialogInterface dialogInterface, int i) {
                        submitHighscore();
                    }
                })
                .setNegativeButton(android.R.string.no, new DialogInterface.OnClickListener() {
                    public void onClick(DialogInterface dialogInterface, int i) {
                        System.err.println("canceled");
                    }
                })
                .setView(nameEntryView)
                .create();
        saveHighcoreDialog.setOwnerActivity(this);
 
  • Danke
Reaktionen: Chaoz
Hrhr.... "versiebt" würd ichs nich nennen, nur die Interfaces an die ich mich halten muss schränken mich n bissl ein. =/

Danke für den Code. :)
 

Ähnliche Themen

P
Antworten
0
Aufrufe
555
Pascppal
P
M
  • MikelKatzengreis
Antworten
5
Aufrufe
128
swa00
swa00
B
Antworten
4
Aufrufe
491
bb321
B
Zurück
Oben Unten