android - 如何从此切换按钮侦听器返回布尔值?
问题描述
我需要从切换按钮侦听器返回一个布尔值来打开和关闭系统。由于该方法无效,如果我尝试返回布尔值,它会对我大喊大叫。如果布尔值是不可能的,返回一个字符串就足够了。我是android新手,所以答案可能很简单,但我迷路了。提前致谢!
进口
import androidx.annotation.NonNull;
import androidx.appcompat.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
import com.google.firebase.database.DataSnapshot;
import com.google.firebase.database.DatabaseError;
import com.google.firebase.database.DatabaseReference;
import com.google.firebase.database.FirebaseDatabase;
import com.google.firebase.database.ValueEventListener;
import com.google.android.gms.tasks.OnCompleteListener;
import android.widget.CompoundButton;
import android.widget.CompoundButton.OnCheckedChangeListener;
import android.widget.ToggleButton;
public class SettingsActivity extends AppCompatActivity {
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_settings);
//creating database instance
FirebaseDatabase database = FirebaseDatabase.getInstance();
final DatabaseReference rootRef = database.getReference("user/key/plants/reaper");
//FirebaseDatabase data = new FirebaseDatabase("test-5487a/user/key/plants/reaper");
//mRef = new FirebaseDatabase("https://test-5487a.firebaseio.com/");
切换按钮和监听器
ToggleButton toggle = (ToggleButton) findViewById(R.id.PowerButton);
toggle.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
if (isChecked) {
// The toggle is enabled
} else {
// The toggle is disabled
}
}
});
解决方案
切换按钮侦听器实际上是一个void
函数。这意味着您不能返回任何参数。你只能执行事情。因此,您可以执行以下操作,而不是返回布尔值:
您可以在侦听器中打开或关闭系统。例如:
ToggleButton toggle = (ToggleButton) findViewById(R.id.PowerButton);
toggle.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
if (isChecked) {
// The toggle is enabled
// --> Switch system on
} else {
// The toggle is disabled
// --> Switch system off
}
}
});
或者你可以做的是创建一个函数,它接受一个布尔值作为参数switchSystem(boolean on)
,然后在监听器中调用它,就像这样:
ToggleButton toggle = (ToggleButton) findViewById(R.id.PowerButton);
toggle.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
switchSystem(isChecked);
}
});
...
void switchSystem(boolean on) {
if (on) {
// --> Switch system on
}else{
// --> Switch system off
}
}
推荐阅读
- c++ - 如何在内存编辑器中提升访问内存的权限?
- python - 如何使用不同的 groupby 将多个聚合函数应用于同一列?
- r - 用 dbplyr 中现有的 sql 翻译组合函数的函数
- scala - 如何将字符串推入列表?
- javascript - 如何等到所有异步/同步循环完成?
- deep-learning - 为什么我的自动编码器在重建时会生成一些奇怪的像素?
- sql-server - SQL Server 更新嵌套层次结构
- java - 从另一个类设置参数
- java - Visual Studio Code 中的 Java 编译错误:找不到或加载主类
- javascript - 在赛普拉斯,有没有办法根据每日消息来避免失败?