我是Android开发的新手,希望您能为我提供帮助。我有一个RecyclerView,每个cardview显示一张图像,两个text视图和一个switch按钮。这个应用程式适合我自己使用,我想整理我的卡片收藏,因此可以通过开关让我知道我是否有卡片,因此我想将数据库更新为1(如果选中),或者将数据库更新为0(如果已选中)。不。我试图用一些Toast测试按钮,但出现错误。这里的代码:
aSwitch = (Switch) findViewById(R.id.switch1);
aSwitch.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
if (isChecked == true) {
Toast.makeText(StockActivity.this, "On", Toast.LENGTH_SHORT).show();
} else {
Toast.makeText(StockActivity.this, "Off", Toast.LENGTH_SHORT).show();
}
}
});
这是我的“切换”按钮代码,我认为还可以,但是出现错误:
java.lang.RuntimeException:无法启动活动ComponentInfo {com.example.battlespiritsdb / com.example.battlespiritsdb.StockActivity}:java.lang.NullPointerException:尝试调用虚拟方法'void android.widget.Switch.setOnCheckedChangeListener (android.widget.CompoundButton $ OnCheckedChangeListener)'引用空对象
错误指向setOnCheckedChangeListener的第一行,我不知道为什么,是因为我在RecyclerView上使用它们吗?
感谢您的帮助!
PS:这很好,我只是意识到我在错误的类上使用了它,所以就像你们中的某些人所说的那样,切换按钮一直指向空对象。谢谢您的帮助!我有一天会停止犯这些菜鸟错误……
答案 0 :(得分:0)
@Kinda --Try This code
sw1 = (Switch)findViewById(R.id.switch1);
sw2 = (Switch)findViewById(R.id.switch2);
btnGet = (Button)findViewById(R.id.getBtn);
btnGet.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
String str1, str2;
if (sw1.isChecked())
str1 = sw1.getTextOn().toString();
else
str1 = sw1.getTextOff().toString();
if (sw2.isChecked())
str2 = sw2.getTextOn().toString();
else
str2 = sw2.getTextOff().toString();
Toast.makeText(getApplicationContext(), "Switch1 - " + str1 + " \n" + "Switch2 - " + str2,Toast.LENGTH_SHORT).show();
}
});
}`enter code here`
}
答案 1 :(得分:0)
您可以尝试这段snippet
代码。
switchButton = (Switch) findViewById(R.id.switch1);
switchButton.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener()
{
@Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked)
{
if (isChecked) {
// if 'isChecked' is true do whatever you need...
// To show a toast use only 'this' (for activity) or 'getActivity()'
// (for fragment) nothing else.
Toast.makeText(this, "On", Toast.LENGTH_SHORT).show(); // or getActvity()
} else {
Toast.makeText(this, "Off", Toast.LENGTH_SHORT).show(); // or getActvity()
}
}
}
});
希望这会有所帮助。