2017-11-21 4 views
0

Ich habe ein Problem mit einem TableLayout. Ich versuche, alle Inhalte zu verbergen, wenn ich auf "Löschen" klicke. Allerdings funktioniert es nur, wenn ich zweimal auf die Schaltfläche klicke. Ich habe auch zwei Radiobuttons, die dieses Tabellenlayout verbergen oder zeigen. Seltsame Sache ist, dass es funktioniert, wenn ein Klick auf ein Optionsfeld mit dem exakt gleichen Code: setVisibility(View.GONE) und setVisibility(View.VISIBLE).TableLayout Visibility GONE funktioniert nur beim zweiten Klick auf die Schaltfläche

Wenn Sie mir helfen könnten, wäre es toll. Hier

ist der Code:

@Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 

     setContentView(R.layout.dialog_task_validation); 

     setTitle("Task Validation"); 

     // set the custom dialog components - text, image and button 
     final RadioGroup radioGroupTask = (RadioGroup) findViewById(R.id.radioGroup); 
     radioGroupTask.clearCheck(); 

     noteLayout = (TableLayout) findViewById(R.id.noteLayout); 


     radioGroupTask.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() { 
      @Override 
      public void onCheckedChanged(RadioGroup group, @IdRes int checkedId) { 
       RadioButton rb = (RadioButton) group.findViewById(checkedId); 
       if (rb != null && checkedId > -1) { 
        switch (checkedId) { 
         // If task Failed 
         case R.id.taskFailedRadioButton: 
          taskCompeleted = 0; 
          noteLayout.setVisibility(View.GONE); 
          note = 0; 
          break; 
         case R.id.taskCompletedRadioButton: 
          taskCompeleted = 1; 
          noteLayout.setVisibility(View.VISIBLE); 
          break; 
        } 
       } 

      } 
     }); 
     Button clear = (Button) findViewById(R.id.clearDialogButton); 


     clear.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View v) { 
       noteLayout.setVisibility(View.GONE); 
       resetButtonBackground(); 
       note = -1; 
       taskCompeleted = -1; 
       radioGroupTask.clearCheck(); 
      } 
     }); 
    } 

Und die XML:

<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:app="http://schemas.android.com/apk/res-auto" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:padding="5dp"> 

    <RadioGroup 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:orientation="horizontal" 
     android:layout_below="@+id/recordNameTV" 
     android:id="@+id/radioGroup"> 

     <RadioButton 
      android:id="@+id/taskFailedRadioButton" 
      style="?android:attr/radioButtonStyle" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:layout_weight="1" 
      android:text="@string/task_failed" /> 
     <RadioButton 
      android:id="@+id/taskCompletedRadioButton" 
      style="?android:attr/radioButtonStyle" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:layout_weight="1" 
      android:text="@string/task_completed" /> 
    </RadioGroup> 


    <TableLayout 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     android:id="@+id/noteLayout" 
     android:layout_below="@+id/radioGroup" 
     android:layout_above="@+id/linearLayout" 
     android:visibility="gone"> 

     <TableRow 
      android:layout_width="match_parent" 
      android:layout_height="match_parent" > 
      <Button 
       android:id="@+id/note1" 
       android:text="1" 
       android:layout_weight="1" 
       style="?android:attr/buttonBarButtonStyle"/> 
      <Button 
       android:id="@+id/note2" 
       android:text="2" 
       android:layout_weight="1" 
       style="?android:attr/buttonBarButtonStyle"/> 
      <Button 
       android:id="@+id/note3" 
       android:text="3" 
       android:layout_weight="1" 
       style="?android:attr/buttonBarButtonStyle"/> 
     </TableRow> 

     <TableRow 
      android:layout_width="match_parent" 
      android:layout_height="match_parent"> 
      <Button 
       android:id="@+id/note4" 
       android:text="4" 
       android:layout_weight="1" 
       style="?android:attr/buttonBarButtonStyle"/> 
      <Button 
       android:id="@+id/note5" 
       android:text="5" 
       android:layout_weight="1" 
       style="?android:attr/buttonBarButtonStyle"/> 
      <Button 
       android:id="@+id/note6" 
       android:text="6" 
       android:layout_weight="1" 
       style="?android:attr/buttonBarButtonStyle"/> 
     </TableRow> 

     <TableRow 
      android:layout_width="match_parent" 
      android:layout_height="match_parent"> 
      <Button 
       android:id="@+id/note7" 
       android:text="7" 
       android:layout_weight="1" 
       style="?android:attr/buttonBarButtonStyle"/> 
      <Button 
       android:id="@+id/note8" 
       android:text="8" 
       android:layout_weight="1" 
       style="?android:attr/buttonBarButtonStyle"/> 
      <Button 
       android:id="@+id/note9" 
       android:text="9" 
       android:layout_weight="1" 
       style="?android:attr/buttonBarButtonStyle"/> 
     </TableRow> 

     <TableRow 
      android:layout_width="match_parent" 
      android:layout_height="match_parent"> 
      <Button 
       android:id="@+id/note10" 
       android:text="10" 
       android:layout_weight="1" 
       style="?android:attr/buttonBarButtonStyle"/> 
     </TableRow> 
    </TableLayout> 


     <LinearLayout 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" 
      android:orientation="horizontal" 
      android:layout_alignParentBottom="true" 
      android:id="@+id/linearLayout"> 

      <Button 
       android:id="@+id/clearDialogButton" 
       style="?android:attr/buttonBarButtonStyle" 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:layout_weight="1" 
       android:text="@string/clearText" /> 

     </LinearLayout> 
</RelativeLayout> 

Dank!

+3

haben Sie versucht, clearChecks() vom Button Click Listener zu entfernen? –

+1

'radioGroupTask.clearCheck();' wird den 'onCheckedChange' Callback auslösen und Ihr Layout wird wieder geändert. – chrjs

+0

Oh ja, das war's! Ich habe den clearCheck() vorher hinzugefügt und es funktioniert gut! Danke ! – Maxouille

Antwort

2

Gerade anderen Menschen helfen, die ich hier mein Kommentar melden werde:

Entfernen Sie den clearCheck Aufruf im button click listener(oder verschieben, bevor die Sichtbarkeit zu ändern), weil es die onCheckedChange Hörer Ihres radioGroupTask auslöst und das wird Ihre layout wieder ändern.

2

clearCheck() - Löscht die Auswahl. Also zuerst müssen Sie die Auswahl löschen. zuerst und dann muss TableLayout ausblenden.

Verwandte Themen