Как я могу вернуть логическое значение от этого слушателя кнопки переключения? - PullRequest
0 голосов
/ 01 апреля 2019

Мне нужно вернуть логическое значение от слушателя переключателя, чтобы включить и выключить систему. Если метод недействителен, он кричит на меня, если я пытаюсь вернуть логическое значение. Если логическое значение невозможно, достаточно вернуть строку. Я новичок в 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 голосов
/ 01 апреля 2019

Слушатель кнопки переключения на самом деле является функцией 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
    }
}
0 голосов
/ 01 апреля 2019

Вы можете вызвать функцию в обратном вызове, чтобы обновить состояние вашей системы.

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