Как отправить событие из вложенного внутреннего класса в Java - PullRequest
0 голосов
/ 09 сентября 2018

У меня есть внешний public class ClassifierModule и внутренний public class ClassifierRunnable. Как отправить int из внутреннего класса и получить его во внешнем? Вот мой код:

//outer class
public class ClassifierModule extends ReactContextBaseJavaModule implements BufferListener {

    public ClassifierModule(ReactApplicationContext reactContext) {
        super(reactContext);
        appState = ((MainApplication)reactContext.getApplicationContext());
        }     

    @Override
    public String getName() {
      return "Classifier";
    }

    // Called to emit events to event listeners in JS
    private void sendEvent(String eventName, int result) {
        getReactApplicationContext()
           .getJSModule(DeviceEventManagerModule.RCTDeviceEventEmitter.class)
           .emit(eventName, result);
    }

    //inner class        
    public class ClassifierRunnable implements Runnable {

        public ClassifierRunnable(double[][] buffer) {
            rawBuffer = buffer;
            PSD = new double[NUM_CHANNELS][nbBins];
        }

        @Override
        public void run() {
            if (noisePresent(rawBuffer)) {
                Log.w("ConcentrationTracker", "noise");

                return;
            }

            else if(isTracking) {
                getSmoothPSD(rawBuffer);

                bandMeans = bandExtractor.extract1D(PSD);

                // Concentration algorithm goes here
                int score = measureRatio(bandMeans);

                Log.w("ConcentrationTracker", "Concentration score" + score);

                sendEvent("CONCENTRATION_SCORE", score);
            }

            else if(isLogging) {
                getSmoothPSD(rawBuffer);

                bandMeans = bandExtractor.extract1D(PSD);

                int a = measureAlpha(bandMeans);
                int b = measureBeta(bandMeans);

                String csvLine = a + "," + b;

            }
    }
}

Ответы [ 2 ]

0 голосов
/ 09 сентября 2018

Похоже, у вас уже есть функция, которая делает это ... Просто перехватите целое число

private void sendEvent(String eventName, int result) {
  System.out.println("Got " + result);
  // other code 
}
0 голосов
/ 09 сентября 2018

Вы можете указать метод во внешнем классе, который принимает значение int и вызывает его из внутреннего класса. Таким образом, вы можете передавать данные во внешний класс.

...