首页 > 解决方案 > 如何从此切换按钮侦听器返回布尔值?

问题描述

我需要从切换按钮侦听器返回一个布尔值来打开和关闭系统。由于该方法无效,如果我尝试返回布尔值,它会对我大喊大叫。如果布尔值是不可能的,返回一个字符串就足够了。我是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
            }
        }
    });

标签: androidreturn-valueandroid-togglebutton

解决方案


切换按钮侦听器实际上是一个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
    }
}

推荐阅读