2017-04-09 1 views
1

Ich möchte eine Ansicht von einem Alertdialog bekommen:einen Blick auf eine Alertdialog

Button R = (Button) findViewById(R.id.toggleButtonA); 

Aber wenn ich das tue, es ist immer null. Was kann ich tun, um die Ansicht zu erhalten und zu bearbeiten?

Hier sind die relevanten Teile des Codes:

public void openSelection(View view) { 
    AlertDialog.Builder builder = new AlertDialog.Builder(Activity.this); 
    LayoutInflater inflater = this.getLayoutInflater(); 
    builder.setView(inflater.inflate(R.layout.dialayout, null)); 
    AlertDialog dialog = builder.create(); 
    dialog.show(); 
} 

Die dialayout.xml

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

<android.support.constraint.ConstraintLayout 
    android:layout_width="match_parent" 
    android:layout_height="match_parent"> 

    <Button 
     android:id="@+id/toggleButtonA" 
     android:layout_width="0dp" 
     android:layout_height="wrap_content" 
     android:layout_marginLeft="16dp" 
     android:layout_marginRight="16dp" 
     android:onClick="select" 
     android:text="All" 
     app:layout_constraintLeft_toLeftOf="parent" 
     app:layout_constraintRight_toRightOf="parent" 
     app:layout_constraintTop_toBottomOf="@+id/toggleButtonM" /> 


</android.support.constraint.ConstraintLayout> 

</LinearLayout> 
+0

posten Sie Ihre xml zu ... –

+0

@AmitUpadhyay Added everythign relevant, danke für den Hinweis! – newToEverything

Antwort

2

Sie müssen zuerst auf eine Variable Ihre aufgeblasene Ansicht zuweisen:

Was den Dialog schafft . Beispiel:

public void openSelection(View view) { 
    AlertDialog.Builder builder = new AlertDialog.Builder(MainActivity.this); 
    LayoutInflater inflater = this.getLayoutInflater(); 
    View v = inflater.inflate(R.layout.activity_main, null); // this line 
    builder.setView(v); 
    AlertDialog dialog = builder.create(); 
    dialog.show(); 

    Button RR = (Button) v.findViewById(R.id.toggleButtonA); // this is how you get a view of the button 
} 

Bitte reneame Ihre Schaltfläche Variablennamen R auf einem anderen Namen vielleicht, weil R ein reserviertes Wort ist.

+0

Danke, das funktioniert! – newToEverything

+0

Ich war so nah, aber das hat alles in Position gebracht. Vielen Dank! –

1

das Layout Eltern zuerst aufpumpen,

LayoutInflater inflater = this.getLayoutInflater(); 
View parent = inflater.inflate(R.layout.activity_main, null); 

dann stellen Sie Ihren Builder dieser übergeordneten Ansicht.

können Sie dann jede Ansicht mit dieser übergeordneten aufgeblähten Ansicht durchführen. Oder Sie können AlertDialog diag = builder.create() anrufen; und führen Sie eine Suche mit dem diag.findViewById(R.id.name);

so Button btR = (Button) diag.findViewById(R.id.toggleButtonA);

oder Button btR = (Button)parent.findViewById(R.id.toggleButtonA);

+0

benennen Sie Ihre Variablen von einem speziellen Schlüsselwort wie R. um, alles andere als das! – Remario

+0

Danke, das klappt auch! – newToEverything