Android中的空对象引用

时间:2019-01-19 21:49:06

标签: android android-studio android-layout android-radiobutton android-radiogroup

我正在尝试广播组。我有一个确定按钮,单击该按钮可以从四个膨胀的单选按钮组中选择一项。我的问题是,当用户未从这些组之一中选择一个选项时,便出现了空指针异常。

这是我的选择代码

private void getSelectedValuesAdults()
{
    rl=(RelativeLayout)findViewById(R.id.activity_selections);

    int id1 = ((RadioGroup)findViewById(R.id.KSradioGrp)).getCheckedRadioButtonId();
    int id2 = ((RadioGroup)findViewById(R.id.KTradioGrp)).getCheckedRadioButtonId();
    int id3 = ((RadioGroup)findViewById(R.id.KDradioGrp)).getCheckedRadioButtonId();
    int id4 = ((RadioGroup)findViewById(R.id.KSoradioGrp)).getCheckedRadioButtonId();

    stringChoice[0]= ((RadioButton)findViewById(id1)).getText().toString().contains(generalKid[0].getName())==true?generalKid[0].getName():generalKid[1].getName();      
    stringChoice[1]= ((RadioButton)findViewById(id2)).getText().toString().contains(generalKid[2].getName())==true?generalKid[2].getName():generalKid[3].getName();
    stringChoice[2]= ((RadioButton)findViewById(id3)).getText().toString().contains(generalKid[4].getName())==true?generalKid[4].getName():generalKid[5].getName();
    stringChoice[3]= ((RadioButton)findViewById(id4)).getText().toString().contains(generalKid[6].getName())==true?generalKid[6].getName():generalKid[7].getName();

    genCost[0]= ((RadioButton)findViewById(id1)).getText().toString().contains(generalKid[0].getName())==true?generalKid[0].getCost()+5:generalKid[1].getCost()+5;
    genCost[0]= ((RadioButton)findViewById(id2)).getText().toString().contains(generalKid[2].getName())==true?generalKid[2].getCost()+5:generalKid[3].getCost()+5;
    genCost[0]= ((RadioButton)findViewById(id3)).getText().toString().contains(generalKid[4].getName())==true?generalKid[4].getCost()+5:generalKid[5].getCost()+5;
    genCost[0]= ((RadioButton)findViewById(id4)).getText().toString().contains(generalKid[6].getName())==true?generalKid[6].getCost()+5:generalKid[7].getCost()+5;

}

“确定”按钮跳转到上述方法。在分配给if(id1==-1||id2==-1||id3==-1||id4==-1) callDialogMessage()之前,我已经使用了stringChoice[0],其中callDialogMessage()是一条消息,通知您您尚未从广播组中选择,但我的应用仍然崩溃。我能做什么?任何帮助将不胜感激

1 个答案:

答案 0 :(得分:0)

单击确定按钮后,将使用单选组选择单选按钮ID。您可以参考以下代码。

     int selectedId =radioButtonGroup.getCheckedRadioButtonId();;

        // find the radiobutton by returned id
     RadioButton radioButton = FindViewById<RadioButton>(selectedId);

     if(radioButton !=null)
      {
        //do things here
      }