findViewById () gibt null für Ansichten in einem Dialogfeld zurück

Das Problem ist, egal wo oder wie ich die Komponenten dieses Layouts aufrufe, sie geben immer null zurück.

setView(inflater.inflate(R.layout.search_layout, null))

Das funktioniert gut. Es zeigt das Layout in derDialogDennoch werden die Kinder von immer als null zurückgegebenfindViewById(R.id.some_search_layout_children).

Ich habe mehrmals versucht, mein Projekt zu bereinigen, und versucht, eine andere Klasse für meine zu implementierenDialog, namensfindViewById() als Mitglied meiner HauptActivity, in derinitSearch() Methode und innerhalb einer anonymen Implementierung vonOnClickListener für dieDialog, aber alle mit dem gleichen Ergebnis. Ich habe auch versucht, die Kinder in unabhängige auszubrechenViews und programmgesteuert aufrufen:

TextView text = (TextView) findResourceById(R.id.new_independant_textview);

Aber wieder das gleiche Ergebnis.

Dies ist der relevante Code:

public class Xyz extends Activity {
    public void onCreate(...) { // some listener will trigger initSearch() }

    private void initSearch() {
        AlertDialog.Builder searchDialog = new AlertDialog.Builder(this);
        LayoutInflater inflater = this.getLayoutInflater();
        searchDialog.setTitle("Search Photos");
        searchDialog.setMessage("Specify tag and value...");
        // R.layout.search_dialog is my custom layour, it displays fine, it works. 
        searchDialog.setView(inflater.inflate(R.layout.search_dialog, null));
        EditText tagText = (EdiText) findViewById(R.id.tagField); // WILL RETURN NULL
        searchDialog.setPositiveButton( ... ) ...
        searchDialog.show();
    }

Diese Linie:

 EditText text = (EditText) findViewById(R.id.tagField);

Gibt immer null zurück, egal wie oder wo es aufgerufen wird - global, lokalfinalusw. - es wird nur null zurückgegeben.

Hier ist das XML meiner GewohnheitDialog Layout:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/search_dialog"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:orientation="vertical" >
    <TextView
        android:id="@+id/tagText" 
        android:padding="7dp"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:textSize="14sp"
        android:text="@string/tag" />
    <EditText 
        android:id="@+id/tagField"
        android:padding="7dp"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:inputType="text"/>
    <TextView
        android:id="@+id/valueText" 
        android:padding="7dp"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:textSize="14sp"
        android:text="@string/value" />
    <EditText 
        android:id="@+id/valueField"
        android:padding="7dp"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:inputType="text"/>
</LinearLayout>

Das ist meinR.java Datei:

public static final class id {
    public static final int action_settings=0x7f0a0011;
    public static final int add_album=0x7f0a0001;
    public static final int add_photo=0x7f0a000d;
    public static final int albums_list=0x7f0a0003;
    public static final int delete_album=0x7f0a000b;
    public static final int exit_finder=0x7f0a000f;
    public static final int new_directory=0x7f0a000e;
    public static final int open_album=0x7f0a000a;
    public static final int photos_grid=0x7f0a0000;
    public static final int rename_album=0x7f0a000c;
    public static final int search_dialog=0x7f0a0004;
    public static final int search_icon=0x7f0a0002;
    public static final int splash_rutgers=0x7f0a0009;
    public static final int tagField=0x7f0a0006; // problematic
    public static final int tagText=0x7f0a0005; / problematic
    public static final int terminate_app=0x7f0a0010;
    public static final int valueField=0x7f0a0008; // problematic
    public static final int valueText=0x7f0a0007; // problematic
}

Antworten auf die Frage(4)

Ihre Antwort auf die Frage