我正在研究在MainActivity
上有一個操縱桿的應用程序。遊戲杆是一個自定義的視圖,並有一個遊戲杆類。當用戶觸摸操縱桿並移動它時,我希望將Y軸值發送到MainActivity
,以便我可以使用該值。將值傳遞給另一個類
在Joystick.java中,我有一個onTouch()
偵聽器。觸摸時,操縱桿產生座標(操縱桿的X和Y),以便我可以在Y軸上得到-100至100的值。
public class Joystick extends View implements OnTouchListener{
int xAxis, yAxis;
public int getYAxis(){
return yAxis;
}
@Override
public boolean onTouch(View arg0, MotionEvent event){
// Code to process event and assign xAxis and yAxis values (-100, 100)
}
}
在MainActivity
我試着做以下,以獲得yAxis
值:
@Override
public void onCreate(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// ... other code
Joystick joy = (Joystick) findViewById(R.id.joystick1);
joy.setOnTouchListener(new View.OnTouchListener(){
@Override
public boolean onTouch(View v, MotionEvent event){
// updateMotorControl() is the funcion I need to pass my value to
updateMotorControl(joy.getYAxis(), 0);
return true;
}
}
但當然AndroidStudio告訴我,joy
需要被聲明爲final。問題是,如果它是最終的,我永遠不會更新值。
我已經嘗試了一百萬件事情,並且不斷收到類似的錯誤。我不是問爲什麼我會得到這個錯誤。我想知道的是,將該值傳遞給MainActivity
並轉而轉入updateMotorControl()
的最佳方法是什麼?
你能不能通過它通過一個構造函數? –
你可以使用_this_而不是快樂(或者只是寫'getYAxis()');) –
@ChrisBolton我可以看到你的意思,但我不確定那是怎麼工作的。你能告訴我如何在代碼中做到這一點? –