2015-01-27 4 views
-1

извините, если мой вопрос глуп, но у меня проблема с переменной вызова из метода с несколькими аргументами.Java: Как вызвать один аргумент из методов с несколькими аргументами

public void onAccelSensorChanged(long axisX, long axisY, long axisZ) { 

     accelx = axisX; 
     accely = axisY; 
     accelz = axisZ; 

     accelText.setText("\nACCELEROMETER: \nX: " + axisX + "nm/s^2 || Y: " + axisY + "nm/s^2 || Z: " + axisZ +"nm/s^2"); 
    } 

Ok, и мне нужно позвонить переменной AccelX, accely, accelz, но каждый из них в другом месте в коде .. Есть ли простой способ сделать это в Java?

мне нужно сделать что-то вроде этого:

case 0xf41f1000: /*pongiGetAccelerateX()*/ 
      //i need call accelX in below 'pongiGetAccelerateX method, but now it returned 0 
      result = spnNative.pongiGetAccelerateX(accelX); 

      break; 

------ EDIT ----

Мой класс:

public class SPN_API implements onAccelSensorChanged{ 

    private SPN_native spnNative; 
    public long accelX, accelY, accelZ; 

    public SPN_API() { 
     spnNative = new SPN_native(); 

    } 

    public byte[] invoke_command(int commandId, int argsImageLength, int actualNrOfArgs) { 
     byte[] result = null; 
     switch(commandId){ 

     case 0xf41f1000: /*pongiGetAccelerateX()*/ 
      //i need call accelX in below 'pongiGetAccelerateX method, but now it returned 0 
      result = spnNative.pongiGetAccelerateX(accelX); 
      break; 
     case 0xf51f1000: /*pongiGetAccelerateY()*/ 
      result = spnNative.pongiGetAccelerateX(accelY); 
      break; 
     case 0xf61f1000: /*pongiGetAccelerateZ()*/ 
      result = spnNative.pongiGetAccelerateX(accelZ); 
      break; 

     } 
     return result; 
    } 


    @Override 
    public void onAccelSensorChanged(long axisX, long axisY, long axisZ) { 

      accelx = axisX; 
      accely = axisY; 
      accelz = axisZ;  
    } 
} 
+0

Где они в коде? Тот же класс или какой-то другой класс? Введите код, в котором эти переменные объявлены, и связь между двумя классами (если отдельно) – TheUknown

ответ

0

Вы можете либо вернуть значение и передать его в другую функцию в качестве аргумента или вы можете использовать глобальную переменную в области класса, чтобы ее можно было получить и изменить из любого места.

+0

Я добавил полный код моего класса. Может быть, теперь ты можешь мне помочь. :) – izek

+0

Код выглядит хорошо, что не так? –

+0

Знаете, они глобально определены внутри класса, поэтому все методы могут получить к ним доступ. –

0

Убедитесь, что ваш класс implements SensorEventListener.

Затем удалите onAccelSensorChange и скопируйте в.

@Override 
public void onSensorChanged(SensorEvent event) { 
    if (event.sensor.getType() == Sensor.TYPE_ACCELEROMETER){ 
     accelX = event.values[0]; 
     accelY = event.values[1]; 
     accelZ = event.values[2]; 
    } 
} 
Смежные вопросы