ToastはActivityだけではなく、SurfaceViewでも表示できます。
ただしToastはContextオブジェクトを必要とするのでちょっと工夫します。
SurfaceViewにToastを実装する前のコードがこちらです。
マニフェスト(AndroidManifest.xml)
Main.java (Activity)
MySurfaceView.java (SurfaceView)
このコードを端末を回転させるたびにToastを表示させるように改造します。
回転のたびに呼び出されるSurfaceViewのonSizeChangedメソッドでToastを表示する方法を2つあげてみました。
1,コンストラクターのcontextを使う
2,ActivityのインナークラスにしてgetApplicationContext()を使う
1,コンストラクターのcontextを使う
1つ目の方法は、SurfaceViewがコンストラクターで受け取ったcontextをToastに渡す方法です。MySurfaceView.java (SurfaceView) のみを改造します。
これで画面を回転するたびにToastが表示されるようになりました。
エミュレーターなら左のCtrl+F12で検証できます。
2,SurfaceViewクラスをActivityクラスのインナークラスにして、ActivityクラスのgetApplicationContext()を使う
2つめの方法はMain.java (Activity) のみを改造します。Activityクラスの内部にSurfaceViewクラスを定義します。
この改造も動作は1と同じです。
この方法はSurfaceViewクラスからActivityクラスのメンバーにアクセスできます。
ただし、SurfaceViewを他のActivityから起動することが難しくなります。
関連ブログ
[Android] Toastをcancelするにはキーワード
Toast Activity SurfaceView getApplicationContext() onSizeChanged
以上、参考になれば幸いです。
SurfaceViewにToastを表示する「Eye元気!/Vigorous eyes!」公開中です!