Fix middle-side radio selection

This commit is contained in:
ajp_anton
2026-06-22 20:18:14 +00:00
parent ea3d8221b5
commit dbdc8e2af8
2 changed files with 20 additions and 3 deletions
@@ -17,6 +17,7 @@ import android.view.inputmethod.EditorInfo;
import android.widget.CheckBox; import android.widget.CheckBox;
import android.widget.EditText; import android.widget.EditText;
import android.widget.LinearLayout; import android.widget.LinearLayout;
import android.widget.RadioButton;
import android.widget.RadioGroup; import android.widget.RadioGroup;
import android.widget.TextView; import android.widget.TextView;
@@ -859,15 +860,30 @@ public final class LayoutFragment extends Fragment {
} }
private int resolveLeftSideId(RadioGroup group) { private int resolveLeftSideId(RadioGroup group) {
int id = group.getChildCount() > 0 ? group.getChildAt(0).getId() : View.NO_ID; int id = sideButtonId(group, 0);
return id != View.NO_ID ? id : 0; return id != View.NO_ID ? id : 0;
} }
private int resolveRightSideId(RadioGroup group) { private int resolveRightSideId(RadioGroup group) {
int id = group.getChildCount() > 1 ? group.getChildAt(1).getId() : View.NO_ID; int id = sideButtonId(group, 1);
return id != View.NO_ID ? id : resolveLeftSideId(group); return id != View.NO_ID ? id : resolveLeftSideId(group);
} }
private int sideButtonId(RadioGroup group, int radioIndex) {
int seen = 0;
for (int i = 0; i < group.getChildCount(); i++) {
View child = group.getChildAt(i);
if (!(child instanceof RadioButton)) {
continue;
}
if (seen == radioIndex) {
return child.getId();
}
seen++;
}
return View.NO_ID;
}
private void setNumericText(EditText input, int value) { private void setNumericText(EditText input, int value) {
if (input == null) { if (input == null) {
return; return;
@@ -10,6 +10,7 @@ import android.view.ViewGroup;
import android.widget.CheckBox; import android.widget.CheckBox;
import android.widget.EditText; import android.widget.EditText;
import android.widget.LinearLayout; import android.widget.LinearLayout;
import android.widget.RadioButton;
import android.widget.RadioGroup; import android.widget.RadioGroup;
import android.widget.ScrollView; import android.widget.ScrollView;
import android.widget.TextView; import android.widget.TextView;
@@ -775,7 +776,7 @@ abstract class LockedSceneLayoutFragment extends Fragment {
private int firstSideId(RadioGroup group, int rightId) { private int firstSideId(RadioGroup group, int rightId) {
for (int i = 0; i < group.getChildCount(); i++) { for (int i = 0; i < group.getChildCount(); i++) {
View child = group.getChildAt(i); View child = group.getChildAt(i);
if (child.getId() != rightId) { if (child instanceof RadioButton && child.getId() != rightId) {
return child.getId(); return child.getId();
} }
} }