java - 未注册单选按钮的更改

标签 java android xml android-layout radio-button

我有一个由 fragment 组成的导航 Activity 。目前,该应用程序用于从单选组中获取选定的 Id,并在单击按钮时将其文本显示为 toast。但是应用程序只显示已经选中的单选按钮(在 xml 中定义),如果我更改选中的单选按钮,它仍会显示在 xml 中定义的已选中的单选按钮

这是 java 类 (FirstFragment.java)

public class FirstFragment extends Fragment implements View.OnClickListener {

View myView;

private RadioGroup radioGroup;
private RadioButton radioButton;
Button btnDisplay;
String text;

@Nullable
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
    View myView = inflater.inflate(R.layout.first_layout, container, false);


    btnDisplay = (Button) myView.findViewById(R.id.btnDisplay);
    btnDisplay.setOnClickListener(this);

    radioGroup = (RadioGroup) myView.findViewById(R.id.radio);
    int selectedId = radioGroup.getCheckedRadioButtonId();
    radioButton = (RadioButton) myView.findViewById(selectedId);

    return myView;
}

@Override
public void onClick(View v) {
    Toast.makeText(getActivity(),
            text = radioButton.getText().toString(), Toast.LENGTH_SHORT).show();
    }

}

这是xml文件

<RadioGroup
        android:id="@+id/radio"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:paddingRight="89dp">

        <RadioButton
            android:id="@+id/radioGram"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:textSize="16dp"
            android:text="Gram"/>

        <RadioButton
            android:id="@+id/radioKilogram"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="Kilogram"
            android:textSize="16sp"
            android:checked="true"/>

    </RadioGroup>

因此,在这种情况下, toast 会显示“千克”,但如果我选中“克”单选按钮, toast 仍会显示“千克”。谁能帮忙解决这个问题?谢谢

最佳答案

试试这个:

private RadioButton rb_1, rb_2;


 //in on createView
    rb_1 = (RadioButton) myView.findViewById(R.id.radioGram);
    rb_2 = (RadioButton) myView.findViewById(R.id.radioKilogram);

     rb_1.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Toast.makeText(getActivity(),
            rb1.getText().toString(), Toast.LENGTH_SHORT).show();
            }
        });
        rb_2.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Toast.makeText(getActivity(),
            rb2.getText().toString(), Toast.LENGTH_SHORT).show();
            }
        });

替代方法:在初始化 myView 后在 onCreateView() 中写入此内容

View myView = inflater.inflate(R.layout.first_layout, container, false);
 RadioGroup radioGroup = (RadioGroup) myView.findViewById(R.id.radio);        
radioGroup.setOnCheckedChangeListener(new OnCheckedChangeListener() 
{
    @Override
    public void onCheckedChanged(RadioGroup group, int checkedId) {
        // checkedId is the RadioButton selected
         switch(checkedId){
                case R.id.radioGram:
                    // do operations specific to this selection
                    Toast.makeText(getActivity(),"Gram selected", Toast.LENGTH_SHORT).show();
                    break;
                case R.id.radioKilogram:
                    // do operations specific to this selection
                    Toast.makeText(getActivity(),"KiloGram selected", Toast.LENGTH_SHORT).show();
                    break;
            }  
    }
});

关于java - 未注册单选按钮的更改,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41334901/

相关文章:

java - 将 Curl 转换为 Java

java - 存储 Java 代码生成器的类型信息

android - 为什么我对 Canvas.drawText() 的调用不起作用

Android:使用ContentResolver,CONTACT_ID 是列还是行?

php - 使用 Guzzle 6 HTTP 客户端检索整个 XML 响应主体

java - 在 onSaveInstanceState 中保存图像按钮的 isSelected() 属性并恢复它

java - RSA 2048 加密解密 - 异常

android - SparseIntArray 查找性能

android - 如何从android中的listview中删除一个项目

XSL 文件中的 Java setParameter