Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/202.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 处理片段中的单选组和按钮_Java_Android_Radio Button_Android Radiogroup - Fatal编程技术网

Java 处理片段中的单选组和按钮

Java 处理片段中的单选组和按钮,java,android,radio-button,android-radiogroup,Java,Android,Radio Button,Android Radiogroup,首先看一下片段xml文件的一部分` <LinearLayout android:layout_weight="1" android:background="#aae4e4e4" android:orientation="horizontal" android:layout_width="match_parent" android:layout_height="wrap

首先看一下片段xml文件的一部分`

  <LinearLayout
            android:layout_weight="1"
            android:background="#aae4e4e4"
            android:orientation="horizontal"
            android:layout_width="match_parent"
            android:layout_height="wrap_content">

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

                <RadioButton
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:onClick="rbclick"
                    android:text="0" />

                <RadioButton


                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:layout_marginLeft="10dp"
                    android:onClick="rbclick"
                    android:text="1" />

                <RadioButton
                    android:id="@+id/radio2"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:layout_marginLeft="10dp"
                    android:onClick="rbclick"
                    android:text="2" />

                <RadioButton
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:layout_marginLeft="10dp"
                    android:onClick="rbclick"
                    android:text="3" />

                <RadioButton
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:layout_marginLeft="10dp"
                    android:onClick="rbclick"
                    android:text="4" />

                <RadioButton
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:layout_marginLeft="10dp"
                    android:onClick="rbclick"
                    android:text="5" />


                <RadioButton
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:layout_marginLeft="10dp"
                    android:layout_marginRight="10dp"
                    android:onClick="rbclick"
                    android:text="6" />
            </RadioGroup>


        </LinearLayout>
在此之前,我指的是(rbclick功能)可以处理活动(重复活动)中的单选组和单选按钮。但在片段中,onClick方法不起作用。我如何解决这个问题?我试过这种方法来寻找碎片

  public void rbclick (View v){

        int radiobtnid=rg.getCheckedRadioButtonId();
        rb =(RadioButton)getActivity().findViewById(radiobtnid);

    }
我认为这个处理程序不起作用。因为当我点击单选按钮时它崩溃了

这是原木猫

    12-18 22:29:07.715 3720-3720/com.example.closeup W/PathParser: Points are too far apart 4.000000596046461
12-18 22:29:11.963 3720-3720/com.example.closeup W/ResourceType: No package identifier when getting name for resource number 0x00000016
12-18 22:29:11.964 3720-3720/com.example.closeup D/AndroidRuntime: Shutting down VM
12-18 22:29:11.972 3720-3720/com.example.closeup E/AndroidRuntime: FATAL EXCEPTION: main
    Process: com.example.closeup, PID: 3720
    android.content.res.Resources$NotFoundException: Unable to find resource ID #0x16
        at android.content.res.Resources.getResourceEntryName(Resources.java:2127)
        at androidx.appcompat.app.AppCompatViewInflater$DeclaredOnClickListener.resolveMethod(AppCompatViewInflater.java:433)
        at androidx.appcompat.app.AppCompatViewInflater$DeclaredOnClickListener.onClick(AppCompatViewInflater.java:393)
        at android.view.View.performClick(View.java:4780)
        at android.widget.CompoundButton.performClick(CompoundButton.java:120)
        at android.view.View$PerformClick.run(View.java:19866)
        at android.os.Handler.handleCallback(Handler.java:739)
        at android.os.Handler.dispatchMessage(Handler.java:95)
        at android.os.Looper.loop(Looper.java:135)
        at android.app.ActivityThread.main(ActivityThread.java:5293)
        at java.lang.reflect.Method.invoke(Native Method)
        at java.lang.reflect.Method.invoke(Method.java:372)
        at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:903)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:698)
12-18 22:34:12.034 3720-3720/com.example.closeup I/Process: Sending signal. PID: 3720 SIG: 9

参数
View v
public void中单击(View v)
是您要查找的单选按钮

尝试使用以下代码:

public void rbclick (View v){

            int radiobtnid=rg.getCheckedRadioButtonId();
            rb =(RadioButton)v.findViewById(radiobtnid);

        }

下面是一个在片段中处理无线组的解决方案

  public void rbclick (View v){

        int radiobtnid=rg.getCheckedRadioButtonId();
        rb =(RadioButton)getActivity().findViewById(radiobtnid);

    }
1.删除mean\u entry\u fragment.xml文件中每个RadioButton的所有行
android:onClick=“rbclick”
,并为每个RadioButton创建一个id

<?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="wrap_content"
    android:layout_weight="1"
    android:background="#aae4e4e4"
    android:orientation="horizontal">

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

        <RadioButton
            android:id="@+id/radio0"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="0" />

        <RadioButton
            android:id="@+id/radio1"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginLeft="10dp"
            android:text="1" />

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

        <RadioButton
            android:id="@+id/radio3"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginLeft="10dp"
            android:text="3" />

        <RadioButton
            android:id="@+id/radio4"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginLeft="10dp"
            android:text="4" />

        <RadioButton
            android:id="@+id/radio5"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginLeft="10dp"
            android:text="5" />

        <RadioButton
            android:id="@+id/radio6"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginLeft="10dp"
            android:layout_marginRight="10dp"
            android:text="6" />
    </RadioGroup>
</LinearLayout>

现在仍然没有。当我单击单选按钮时,应用程序崩溃:(当您尝试为不在
活动
中的方法设置
onClick
属性时,总是会出现错误。您不应该真正使用
onClick
RadioButton
来开始。相反,在代码中的
RadioGroup
上设置
oncheckedchangelister
。我已经解决了这个问题通过另一种方法。不管怎样,这很好也谢谢@Nhat Giang:)
private RadioGroup.OnCheckedChangeListener onCheckedChangeListener = new RadioGroup.OnCheckedChangeListener() {
    @Override
    public void onCheckedChanged(RadioGroup group, int checkedId) {
        switch (checkedId) {
            case R.id.radio0:
                // Write your code here
                break;
            case R.id.radio1:
                // Write your code here
                break;
            case R.id.radio2:
                // Write your code here
                break;
            case R.id.radio3:
                // Write your code here
                break;
            case R.id.radio4:
                // Write your code here
                break;
            case R.id.radio5:
                // Write your code here
                break;
            case R.id.radio6:
                // Write your code here
                break;
            default:
                break;
        }
    }
};

@Override
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container,
                         @Nullable Bundle savedInstanceState) {
    View view = inflater.inflate(R.layout.meal_entry_fragment, container, false);
    rg = view.findViewById(R.id.group_no_1);
    rg.setOnCheckedChangeListener(onCheckedChangeListener);
    return view;
}