0

I've been trying to find a way to create a listener for a boolean on an android code reader. Essentially what I want to happen is, when it stops reading, perform action. So far I've based it off of this example, and have this:

Class:

public class scanStatusListener {

    ScanManager scanManager;
    private boolean scanStatus = scanManager.isReading(); //this returns if the reader is scanning or not
    private ChangeListener listener;

    public void setListener(ChangeListener listener) {
        this.listener = listener;
    }

    public interface ChangeListener {
        void onChange();
    }
}

Activity:

public class ScanHook extends Service implements ScanManager.DataListener, scanStatusListener.ChangeListener{

    private ScanManager _scanManager;

    @Override
    public void onCreate() {
        super.onCreate();

        _scanManager = ScanManager.createScanManager(getApplicationContext());

        scanStatusListener ss = new scanStatusListener();
        ss.setListener(new scanStatusListener.ChangeListener() {
            public void onChange() {
                //perform action
            }
        });

    }

The issue I am getting is:

private boolean scanStatus = scanManager.isReading();

is getting an error saying that I cannot invoke on a null object reference.

I also tried using the LiveData suggestion:

        MutableLiveData<Boolean> listen_bool=new  MutableLiveData<>();

        listen_bool.observe((LifecycleOwner) this, new Observer<Boolean>() {
            @Override
            public void onChanged(Boolean aBoolean) {
                //perform action
            }
        });

        listen_bool.setValue(_scanManager.isReading());

however I am getting an error saying I cannot cast to androidx.lifecycle.LifecycleOwner

Any suggestions?

0 Answers0