我有一个由 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/