###前提・実現したいこと
僕はandroidstudioを使ってアプリを作っているのですがoverrideで書いているメソッドの中にある変数を他のクラスで使用したい場合どうすればいいのかわかりません。
変数を更新してそれを他クラスで使えばいいと教えていただいたのですが、変数をリストに入れてそのリストを他クラスで参照するような形を取るのがいいのでしょうか?
ちなみに以下のコードはこちらの本に乗っているサンプルプログラムの使わない部分を省いたもので、実際にダウンロードできます。
###該当のソースコード(受け渡す側です)
onSensorChangedこ中にあるxとyを他のクラスで使いたいです。
java
1import android.content.Context; 2import android.content.pm.ActivityInfo; 3import android.graphics.Canvas; 4import android.graphics.Color; 5import android.graphics.Paint; 6import android.hardware.Sensor; 7import android.hardware.SensorEvent; 8import android.hardware.SensorEventListener; 9import android.hardware.SensorManager; 10import android.os.Bundle; 11import android.support.v7.app.AppCompatActivity; 12import android.util.Log; 13import android.view.SurfaceHolder; 14import android.view.SurfaceView; 15 16 17 18public class MainActivity extends AppCompatActivity 19 implements SensorEventListener, SurfaceHolder.Callback { 20 //SurfaceView生成時のイベントをコールバックで受け取るためにMainActivityにSurfaceHolder.Callback を実装 21 SensorManager mSensorManager; 22 Sensor mAccSensor; 23 SurfaceHolder mHolder; 24 int mSurfaceWidth = 0;//画面の幅 25 int mSurfaceHeight = 0;//画面の高さ 26 float y; 27 float x; 28 29 30 31 32 @Override 33 protected void onCreate(Bundle savedInstanceState) { 34 super.onCreate(savedInstanceState); 35 setContentView(R.layout.activity_main); 36 mSensorManager = (SensorManager) getSystemService(Context.SENSOR_SERVICE); 37 mAccSensor = mSensorManager.getDefaultSensor(Sensor.TYPE_LINEAR_ACCELERATION); 38 39 } 40 41 @Override 42 public void onSensorChanged(SensorEvent event) { 43 if (event.sensor.getType() == Sensor.TYPE_GYROSCOPE) { 44 y = event.values[0]; 45 x = event.values[1]; 46 } 47 } 48 49 @Override 50 public void onAccuracyChanged(Sensor sensor, int i) { 51 } 52 53 @Override 54 public void surfaceCreated(SurfaceHolder surfaceHolder) { 55 registerSensor(); 56 } 57 58 public void registerSensor() { 59 mSensorManager.registerListener(this, mAccSensor, SensorManager.SENSOR_DELAY_GAME); 60 } 61 @Override 62 public void surfaceChanged(SurfaceHolder holder, int format, int width, int height) { 63 mSurfaceWidth = width; 64 mSurfaceHeight = height; 65 } 66 67 @Override 68 public void surfaceDestroyed(SurfaceHolder surfaceHolder) { 69 mSensorManager.unregisterListener(this); 70 } 71 72} 73
受け取る側では
java
1MainActivity ma = new MainActivity 2float x1 = ma.x; 3float y1 = ma.y;
のように使いたいです。
初めての質問で至らない点があるとは思いますがご教授よろしくお願いします。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2017/12/25 05:47