2017-06-27 1 views
0

Ich habe einen Alarmdialog, der eine benutzerdefinierte Ansicht mit zwei Optionsfeldern in einer RadioGroup enthält. Jetzt, wenn ich OnCheckChangedListener auf diesem RadioGroup durch Aufblasen der benutzerdefinierten Ansicht festlegen, wird es nicht ausgelöst. Es wird auch kein Fehlerprotokoll angezeigt.Kann OnCheck nicht auslösen Geänderte Evet of RadioGroup im Alarmdialog mit benutzerdefinierter Ansicht

Ich habe diesen Beitrag gefolgt, bevor hier fragen: Link

Nach meinem Code für Alarm-Dialog ist.

AlertDialog.Builder alt_bld = new AlertDialog.Builder(this, R.style.AlertDialogStyle); 
    alt_bld.setTitle("Select Date"); 
    alt_bld.setView(R.layout.alert_dialog_radiogroup); 

    //here I'm setting listener. 
    try{ 
     final View view = View.inflate(addAlarm.this, R.layout.alert_dialog_radiogroup, null); 
     radioGroup = (RadioGroup)view.findViewById(R.id.radio); 
     radioGroup.clearCheck(); 
     radioGroup.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() { 
      @Override 
      public void onCheckedChanged(RadioGroup radioGroup, @IdRes int i) { 
       //My code to handle checked radio button. 
      } 
     }); 
    } catch (Exception e){ 
     e.printStackTrace(); 
    } 

    //setting +ve and -ve buttons here. 
    ... 

    AlertDialog alert = alt_bld.create(); 
    alert.show(); 

Und das ist meine benutzerdefinierte Ansicht für Alarmdialog.

alert_dialog_radiogroup.xml

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
android:layout_width="match_parent" 
android:layout_height="100sp" > 

<RadioGroup 
    android:layout_width="match_parent" 
    android:id="@+id/radio" 
    android:layout_marginTop="10sp" 
    android:layout_marginStart="25sp" 
    android:layout_marginBottom="15sp" 
    android:layout_height="wrap_content" 
    android:orientation="vertical"> 

    <RadioButton 
     android:id="@+id/track_everyday" 
     android:textColor="@color/colorPrimaryText" 
     android:layout_width="wrap_content" 
     android:buttonTint="@color/colorAccent" 
     android:layout_height="wrap_content" 
     android:text="@string/everyday" /> 

    <RadioButton 
     android:id="@+id/custom_track" 
     android:layout_marginTop="8sp" 
     android:textColor="@color/colorPrimaryText" 
     android:layout_width="wrap_content" 
     android:buttonTint="@color/colorAccent" 
     android:layout_height="wrap_content" 
     android:layout_below="@+id/rd" 
     android:text="@string/custom" /> 

</RadioGroup> 

Ich habe, bevor er fragte hier, um dieses Problem gesucht. In einigen Posts ist die Antwort das Löschen des Häkchens von allen Optionsfeldern vor dem Einstellen des Listeners. Ich habe dies von radioGroup.clearCheck(); versucht, aber nicht funktioniert.

Also was fehlt mir hier? Danke für die Hilfe.

+0

Versuchen Sie, die aufgeblähte Ansicht in der Methode alertBuilder.setView (View) zu übergeben, nachdem Sie den Listener implementiert haben. –

+0

danke. schreibe es als Antwort mit Grund und ich werde es akzeptieren. @sarthakGandhi – Kaushal28

+0

@Pavneet_Singh Ich denke, es wird nicht funktionieren. Ich habe es vorher versucht. – Kaushal28

Antwort

0

Sie legen die Ansicht fest, bevor Sie die Listener darauf initialisieren.

starten:

AlertDialog.Builder alt_bld = new AlertDialog.Builder(this, R.style.AlertDialogStyle); 
alt_bld.setTitle("Select Date"); 


try{ 
    final View view = View.inflate(addAlarm.this, R.layout.alert_dialog_radiogroup, null); 
    radioGroup = (RadioGroup)view.findViewById(R.id.radio); 
    radioGroup.clearCheck(); 
    radioGroup.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() { 
     @Override 
     public void onCheckedChanged(RadioGroup radioGroup, @IdRes int i) { 
      //My code to handle checked radio button. 
     } 

    }); 
    alt_bld.setView(view); 
} catch (Exception e){ 
    e.printStackTrace();  
} 

//setting +ve and -ve buttons here. 
... 

AlertDialog alert = alt_bld.create(); 
alert.show(); 

Hoffnung, das hilft.

Verwandte Themen