0

2 つの RadioButton を含む RadioGroup を持つカスタム ダイアログがあります。選択された RadioButton によって、設定される String が決まります。私がする時

 Toast.makeText(NewFile.this, checkedId, Toast.LENGTH_LONG)
                            .show();

どの RadioButton が選択されているかに関係なく、checkedId が false として表示され、2 番目のケースのみが String を正しい値に設定します。以下は現在私のコードです:

AlertDialog.Builder customDialog = new AlertDialog.Builder(NewFile.this);
        LayoutInflater layoutInflater = (LayoutInflater) getApplicationContext()
                .getSystemService(Context.LAYOUT_INFLATER_SERVICE);
        View view = layoutInflater.inflate(R.layout.jquery_dialog, null);
        final EditText idTxt = (EditText) view.findViewById(R.id.idName);
        final CheckBox headerChk = (CheckBox) view.findViewById(R.id.headerChk);
        final CheckBox footerChk = (CheckBox) view.findViewById(R.id.footerChk);
        final RadioGroup group = (RadioGroup) view
                .findViewById(R.id.jqmNavigation);
        customDialog.setView(idTxt);
        customDialog.setView(headerChk);
        customDialog.setView(footerChk);
        group.setOnCheckedChangeListener(new OnCheckedChangeListener() {

            @Override
            public void onCheckedChanged(RadioGroup group, int checkedId) {

                switch (checkedId) {
                case R.id.ol: // First RadioButton
                    Toast.makeText(NewFile.this, checkedId, Toast.LENGTH_LONG)
                            .show();
                    jqMobNavbar = "<div data-role=\"navbar\">\n" + "        <ol>\n"
                            + "         <li><a href=\"#\">Page 1</a></li>\n"
                            + "         <li><a href=\"#\">Page 2</a></li>\n"
                            + "         <li><a href=\"#\">Page 3</a></li>\n"
                            + "     <ol>\n" + " </div>\n";
                    break;
                case R.id.ul: // Second RadioButton
                    Toast.makeText(NewFile.this, checkedId, Toast.LENGTH_LONG)
                            .show();
                    jqMobNavbar = "<div data-role=\"navbar\">\n" + "        <ul>\n"
                            + "         <li><a href=\"#\">Page 1</a></li>\n"
                            + "         <li><a href=\"#\">Page 2</a></li>\n"
                            + "         <li><a href=\"#\">Page 3</a></li>\n"
                            + "     <ul>\n" + " </div>\n";
                    break;

                }

            }
        });

そして私のXML

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

    <com.androidwebtoolkit.TransparentPanel
        android:id="@+id/transparentPanel1"
        android:layout_width="match_parent"
        android:layout_height="50dp"
        android:layout_weight="0"
        android:paddingBottom="10dp"
        android:paddingTop="10dp" >

        <TextView
            android:id="@+id/textView1"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_centerVertical="true"
            android:layout_toRightOf="@+id/imageView1"
            android:text="jBuilder"
            android:textAppearance="?android:attr/textAppearanceLarge" />

        <ImageView
            android:id="@+id/imageView1"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignParentBottom="true"
            android:layout_alignParentLeft="true"
            android:layout_marginLeft="11dp"
            android:src="@drawable/jquerymobileicon" />

    </com.androidwebtoolkit.TransparentPanel>

    <TextView
        android:id="@+id/textView2"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginLeft="10dp"
        android:layout_marginTop="10dp"
        android:layout_weight="0"
        android:text="ID:"
        android:textSize="25sp" />

    <EditText
        android:id="@+id/idName"
        android:layout_width="160dp"
        android:layout_height="wrap_content"
        android:layout_marginLeft="10dp"
        android:ems="10" >

        <requestFocus />
    </EditText>

    <CheckBox
        android:id="@+id/headerChk"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginLeft="10dp"
        android:layout_marginTop="10dp"
        android:layout_weight="0"
        android:text="Header" />

    <CheckBox
        android:id="@+id/footerChk"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginLeft="10dp"
        android:layout_marginTop="10dp"
        android:layout_weight="0"
        android:text="Footer" />

    <TextView
        android:id="@+id/textView3"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_weight="0"
        android:paddingLeft="10dp"
        android:text="Navigation"
        android:textAppearance="?android:attr/textAppearanceMedium" />

    <RadioGroup
        android:id="@+id/jqmNavigation"
        android:layout_width="312dp"
        android:layout_height="wrap_content"
        android:orientation="horizontal" >

        <RadioButton
            android:id="@+id/ol"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="Ordered List" />

        <RadioButton
            android:id="@+id/ul"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="Unordered List" />

    </RadioGroup>

</LinearLayout>

私も試してみました

group.setOnCheckedChangeListener(new OnCheckedChangeListener() {

            @Override
            public void onCheckedChanged(RadioGroup group, int checkedId) {
                int radioButtonID = group.getCheckedRadioButtonId();
                View radioButton = group.findViewById(radioButtonID);
                int idx = group.indexOfChild(radioButton);
                switch (idx) {
                case 1:
                    Toast.makeText(NewFile.this, checkedId, Toast.LENGTH_LONG)
                            .show();
                    jqMobNavbar = "<div data-role=\"navbar\">\n" + "        <ol>\n"
                            + "         <li><a href=\"#\">Page 1</a></li>\n"
                            + "         <li><a href=\"#\">Page 2</a></li>\n"
                            + "         <li><a href=\"#\">Page 3</a></li>\n"
                            + "     <ol>\n" + " </div>\n";
                    break;
                case 2:
                    Toast.makeText(NewFile.this, checkedId, Toast.LENGTH_LONG)
                            .show();
                    jqMobNavbar = "<div data-role=\"navbar\">\n" + "        <ul>\n"
                            + "         <li><a href=\"#\">Page 1</a></li>\n"
                            + "         <li><a href=\"#\">Page 2</a></li>\n"
                            + "         <li><a href=\"#\">Page 3</a></li>\n"
                            + "     <ul>\n" + " </div>\n";
                    break;

                }

            }
        });

選択した RadioButton の値を確認する正しい方法は何ですか?

4

2 に答える 2

1

checkedId が false とはどういう意味ですか? これは int であり、false にすることはできません。いずれかの case ステートメントが機能する場合、checkedId が本来あるべき id 値であることを意味します。

最初の RadioButton を XML でチェック済みとして設定すると、他のボタンが押されるまでどちらのケースも呼び出されません。 または、各ボタンにhttp://developer.android.com/reference/android/widget/CompoundButton.OnCheckedChangeListener.htmlを設定することもできます。

于 2013-04-24T21:10:30.167 に答える
0

falseであるため、返されますInteger。使用してみてください:

Toast.makeText(getApplicationContext(), Integer.toString(checkedId), Toast.LENGTH_SHORT).show();
于 2013-07-14T17:56:18.520 に答える