如何从此切换按钮侦听器返回布尔值?

时间:2019-04-01 19:39:09

标签: android return-value android-togglebutton

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

2 个答案:

答案 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
    }
}