检查java中是否没有选中单选按钮

xytpbqjk  于 2021-07-04  发布在  Java
关注(0)|答案(3)|浏览(304)

我正在学习android,用java制作一个简单的计算器,如图中所示。计算器
当我尝试应用程序时,两个单选按钮都没有选中,因此当我按下“计算”按钮时,应用程序将关闭。
我试着做了一个压缩,如果两个按钮都没有被选中,应用程序会显示一个祝酒词,但无论如何应用程序都会关闭。
这是压缩代码(其中btnsumar和btnrestar是单选按钮):

if(!btnSumar.isChecked() && !btnRestar.isChecked()) {

       Toast.makeText(MainActivity.this, "Please, select one option", Toast.LENGTH_SHORT).show();
   }

在我看来这是合乎逻辑的,但行不通。
谢谢你的帮助!
这是logcat

2020-09-06 18:51:48.814 10245-10245/com.triopsstudio.seccion01 E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.triopsstudio.seccion01, PID: 10245
java.lang.IllegalStateException: Could not execute method for android:onClick
    at androidx.appcompat.app.AppCompatViewInflater$DeclaredOnClickListener.onClick(AppCompatViewInflater.java:414)
    at android.view.View.performClick(View.java:7448)
    at android.view.View.performClickInternal(View.java:7425)
    at android.view.View.access$3600(View.java:810)
    at android.view.View$PerformClick.run(View.java:28305)
    at android.os.Handler.handleCallback(Handler.java:938)
    at android.os.Handler.dispatchMessage(Handler.java:99)
    at android.os.Looper.loop(Looper.java:223)
    at android.app.ActivityThread.main(ActivityThread.java:7656)
    at java.lang.reflect.Method.invoke(Native Method)
    at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:592)
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:947)
 Caused by: java.lang.reflect.InvocationTargetException
    at java.lang.reflect.Method.invoke(Native Method)
    at androidx.appcompat.app.AppCompatViewInflater$DeclaredOnClickListener.onClick(AppCompatViewInflater.java:409)
    at android.view.View.performClick(View.java:7448) 
    at android.view.View.performClickInternal(View.java:7425) 
    at android.view.View.access$3600(View.java:810) 
    at android.view.View$PerformClick.run(View.java:28305) 
    at android.os.Handler.handleCallback(Handler.java:938) 
    at android.os.Handler.dispatchMessage(Handler.java:99) 
    at android.os.Looper.loop(Looper.java:223) 
    at android.app.ActivityThread.main(ActivityThread.java:7656) 
    at java.lang.reflect.Method.invoke(Native Method) 
    at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:592) 
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:947) 
 Caused by: java.lang.NumberFormatException: For input string: ""
    at java.lang.Integer.parseInt(Integer.java:627)
    at java.lang.Integer.parseInt(Integer.java:650)
    at com.triopsstudio.seccion01.MainActivity.Calcular(MainActivity.java:53)
72qzrwbm

72qzrwbm1#

根据stacktrace,您有一个numberformatexception,因为您还没有输入。您尝试从空字符串中解析数字。parseint(“”)导致异常(第53行mainactivity类)

2ledvvac

2ledvvac2#

对每个必须检查的单选按钮使用ischecked()函数。

RadioButton maleRadioButton, femaleRadioButton;

maleRadioButton = (RadioButton) findViewById(R.id.maleRadioButton);
femaleRadioButton = (RadioButton) findViewById(R.id.femaleRadioButton);

然后将结果用于代码案例考虑,以选中单选按钮。

if (maleRadioButton.isChecked() || femaleRadioButton.isChecked()) {
     Log.d("QAOD", "Gender is Selected");
} else {
    Toast.makeText(getApplicationContext(), "Please select Gender", Toast.LENGTH_SHORT).show();
    Log.d("QAOD", "Gender is Null");
}
50pmv0ei

50pmv0ei3#

您可以在默认情况下选中其中一个单选按钮,它的id来自radiogroup
前任:

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

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

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

    </RadioGroup>

主要活动:

//top level declaration..
private RadioGroup radioSexGroup;
private RadioButton radioSexButton;

内部 onCreate(Bundle savedInstanceState) ```
radioSexGroup = (RadioGroup) findViewById(R.id.radioSex);
// get selected radio button from radioGroup
int selectedId = radioSexGroup.getCheckedRadioButtonId();

    // find the radiobutton by returned id

radioSexButton = (RadioButton) findViewById(selectedId);//this will have selected button id

相关问题