【问题标题】:How can I return a boolean value from this toggle button listener?如何从此切换按钮侦听器返回布尔值?
【发布时间】:2019-04-01 19:39:09
【问题描述】:

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

【问题讨论】:

    标签: android return-value android-togglebutton


    【解决方案1】:

    您可以在回调中调用一个函数来更新系统状态。

    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.
        }
    }
    

    【讨论】:

      【解决方案2】:

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2015-06-20
        • 1970-01-01
        • 2017-07-13
        • 2012-03-17
        • 1970-01-01
        • 1970-01-01
        • 2017-07-21
        • 2021-08-02
        相关资源
        最近更新 更多