我需要从切换按钮侦听器返回一个布尔值,以打开和关闭系统。由于该方法无效,因此如果我尝试返回布尔值,它将对我大喊。如果不可能使用布尔值,则返回一个字符串就足够了。我是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
}
}
});
答案 0 :(得分:0)
您可以在回调中调用一个函数来更新系统状态。
ToggleButton toggle = (ToggleButton) findViewById(R.id.PowerButton);
toggle.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
setSystem(isChecked);
}
});
然后实施您的实际系统。
public void setSystem(boolean isChecked) {
if(isChecked) {
// Turn the system on.
} else {
// Turn the system off.
}
}
答案 1 :(得分:0)
切换按钮侦听器实际上是一个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
}
}