使用OnCheckedChangedListener在复选框中设置字符串值会在Android中返回空值

时间:2015-03-01 08:03:01

标签: java android string checkbox

我有一个Checkbox,在选中或未选中String时设置Checkbox的值。但是我的String返回一个空值。我已在Public class的{​​{1}}内声明了该字符串。为什么它返回null?

我希望将字符串插入数据库FYI。

Activity

2 个答案:

答案 0 :(得分:1)

因为你还没有初始化LabText和LecText。 Toast消息是您活动生命周期的一部分。这意味着,无论您是否单击复选框,它们都将被执行。恰好在执行时,LabText和LecText为空。

解决方案是初始化它们:

String LabText = "", LecText= "";

如果您希望在单击复选框时显示Toast,请放置:

Toast.makeText(this,LabText, Toast.LENGTH_SHORT).show();

Toast.makeText(this,LecText, Toast.LENGTH_SHORT).show();

OnCheckedChangeListeners内。

编辑代码:

Lab = (CheckBox)findViewById(R.id.LabCheck);
Lec = (CheckBox)findViewById(R.id.RoomCheck);

if(Lab.isChecked()) {
    LabText = "withlab";    
} else {
    LabText = "without";
}

if (Lec.isChecked()) {
    LecText = "corner";
} else {
    LecText = "notcorner";
}

Toast.makeText(this,LabText, Toast.LENGTH_SHORT).show();

Toast.makeText(this,LecText, Toast.LENGTH_SHORT).show();

答案 1 :(得分:0)

根据您的期望完成工作代码。据我了解您的问题。

public class MainActivity extends ActionBarActivity {

    CheckBox Lab,Lec;
    String LabText="";
    String LecText="";

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        Lab = (CheckBox)findViewById(R.id.LabCheck);
        Lec = (CheckBox)findViewById(R.id.RoomCheck);

        if(Lab.isChecked()) {
            LabText = "withlab";    
        } else {
            LabText = "without";
        }

        if (Lec.isChecked()) {
            LecText = "corner";
        } else {
            LecText = "notcorner";
        }

        Toast toast1 = Toast.makeText(getApplicationContext(), 
                            LabText, Toast.LENGTH_SHORT);
        toast1.show();

        Toast toast2 = Toast.makeText(getApplicationContext(), 
                            LecText, Toast.LENGTH_SHORT);
        toast2.show();
    }    
}

如果你还在,请告诉我。面对问题