0

次のコードでActivityを起動するがあります。AlertDialog残念ながら、実際にどのラジオ ボタンがチェックされたかに関係なく、 RadioGroupas checked から取得される id は常に最初のラジオ ボタンの ID です。

問題は、[OK] ボタンが押されたときにビューが既に破棄されていることだと思いますが、その場合に文字列がまだ機能する理由はわかりません。

なぜこれが起こるのでしょうか?実際のラジオボタンをチェックするにはどうすればよいでしょうか?

AlertDialog.Builder builder = new AlertDialog.Builder(this);
final View v = getLayoutInflater().inflate(R.layout.dialog_add_team, null);
builder.setView(v);
// Add the buttons
builder.setPositiveButton(R.string.ok,
    new DialogInterface.OnClickListener() {
    public void onClick(DialogInterface dialog, int id) {
            String name = ((EditText) v.findViewById(R.id.team_name)).getText()+"";
            if (name.equals(""))
                return;
            int checkedId=((RadioGroup)v.findViewById(R.id.radioGroup1))
                              .getCheckedRadioButtonId();
            teamAdded(name, checkedId);
        }
    });
    builder.setNegativeButton(R.string.cancel,
            new DialogInterface.OnClickListener() {
                public void onClick(DialogInterface dialog, int id) {
                    // User cancelled the dialog
                }
            });

    AlertDialog dialog = builder.create();
    dialog.show();

}

私のレイアウトのXMLは次のとおりです。

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

    <EditText
        android:id="@+id/team_name"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:ems="10"
        android:hint="@string/teamname" >

        <requestFocus />
    </EditText>

    <RadioGroup
        android:id="@+id/radioGroup1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content" >

        <RadioButton
            android:id="@+id/radio0"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:checked="true"
            android:text="@string/bothgenders" />

        <RadioButton
            android:id="@+id/radio1"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="@string/boys" />

        <RadioButton
            android:id="@+id/radio2"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="@string/girls" />
    </RadioGroup>

</LinearLayout>
4

1 に答える 1

2

setOnCheckedChangeListener を radioGroup に設定する必要があると思います。この回答を使用できます。お役に立てれば。

于 2013-04-27T20:21:55.933 に答える