質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
Android Studio

Android Studioは、 Google社によって開発された、 Androidのネイティブアプリケーション開発に特化した統合開発ツールです。

Q&A

2回答

24063閲覧

メソッドはスーパータイプのメソッドをオーバーライドまたは実装しません

sadman

総合スコア11

Android Studio

Android Studioは、 Google社によって開発された、 Androidのネイティブアプリケーション開発に特化した統合開発ツールです。

0グッド

0クリップ

投稿2017/05/21 02:57

###前提・実現したいこと
serviceでアプリがバックグラウンド状態でも常にタップした座標を取得したい。

###発生している問題・エラーメッセージ

Error:(71, 5) エラー: メソッドはスーパータイプのメソッドをオーバーライドまたは実装しません

上記のエラーが出て解決できません…

Error:Execution failed for task ':app:compileDebugJavaWithJavac'.

Compilation failed; see the compiler error output for details.

###該当のソースコード

java

1import android.app.Service; 2import android.content.Context; 3import android.content.Intent; 4import android.graphics.PixelFormat; 5import android.os.IBinder; 6import android.support.annotation.Nullable; 7import android.util.Log; 8import android.view.MotionEvent; 9import android.view.View; 10import android.view.WindowManager; 11import android.widget.TextView; 12 13 14public class MainService extends Service { 15 private static final String TAG = "Hello"; 16 private final boolean FLAG = true; 17 private static final int TAP_COUNT = 10; 18 private View mView; 19 private long[] mTimestamp = new long[TAP_COUNT]; 20 int count=0; 21 TextView txtMessage1; 22 23 24 25 26 27 @Nullable 28 @Override 29 public IBinder onBind(Intent intent) { 30 return null; 31 } 32 33 @Override 34 public int onStartCommand(Intent intent, int flags, int startId) { 35 WindowManager wm = (WindowManager) getSystemService(Context.WINDOW_SERVICE); 36 37 WindowManager.LayoutParams params = new WindowManager.LayoutParams( 38 0, 39 0, 40 WindowManager.LayoutParams.TYPE_SYSTEM_ALERT, 41 WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE 42 | WindowManager.LayoutParams.FLAG_WATCH_OUTSIDE_TOUCH, 43 PixelFormat.OPAQUE); 44 45 46 wm.addView(mView, params); 47 48 49 txtMessage1 = new TextView(this); 50 wm.addView(txtMessage1,params); 51 52 53 54 55 return START_STICKY; 56 } 57 58 @Override 59 public void onDestroy() { 60 super.onDestroy(); 61 62 WindowManager wm = (WindowManager) getSystemService(Context.WINDOW_SERVICE); 63 wm.removeView(mView); 64 mView = null; 65 } 66 67 @Override 68 public boolean onTouchEvent(MotionEvent event) { 69 70 switch (event.getAction()) { 71 case MotionEvent.ACTION_DOWN: 72 Log.d("TouchEvent", "X:" + event.getX() + ",Y:" + event.getY()); 73 74 75 break; 76 case MotionEvent.ACTION_UP: 77 Log.d("TouchEvent", "X:" + event.getX() + ",Y:" + event.getY()); 78 79 break; 80 } 81 return false; 82 } 83}

###試したこと
課題に対してアプローチしたことを記載してください

###補足情報(言語/FW/ツール等のバージョンなど)
Android studio 2.1.3

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

@Overrideアノテーションは対象となるメソッドが親クラスやインタフェースのメソッドをオーバーライドすることをコンパイラがチェックするためのものです。名前や引数の間違いなどでオーバーライドできていない場合、表題のようなエラーを出します。
継承元となるServiceクラスにonTouchEventが存在しないので、オーバーライド出来ていません。

投稿2017/05/21 03:04

swordone

総合スコア20649

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

sadman

2017/05/21 03:07

ご回答ありがとうございます! 申し訳ありません、印をつけ忘れましたが完全に初心者でして… ServiceクラスにonTouchEventを追加するにはどうすればいいでしょうか?
swordone

2017/05/21 03:13

少なくとも現状onTouchEventについている@Overrideが邪魔です。これを消すのが手っ取り早いです。 ただ意図としては何かのイベントリスナーのメソッドですよね?そのインタフェースをimplementsするべきではないでしょうか。
sadman

2017/05/21 04:02

@Overrideを消すとインストール自体はされますが、問題が発生しました 終了しますになるんですよね… インタフェースをimplementsとは、 public class MainService extends Service implements の後ろにOnTouchListenerなどと書くことですか?
guest

0

このエラーのJavaとしての仕様上の意味はswordoneさんの回答にある通りです。

質問者さんはServiceクラスにタッチした際のハンドラーを定義したいと考えたのですが、Serviceクラスにはそういうイベントハンドラーは定義できません。Serviceはそういうイベントの処理をするクラスとして設計されてないからです。

Serviceは何かしらの処理をバックグラウンドで行うために用いますが、バックグラウンドでやるということは普通、ユーザーからの操作によって反応するのではなく人知れずこっそり裏側で動いている処理であると考えるのがよさそうです。

もしアプリケーション画面への操作によってServiceの動作に対してなんらかの制御を行いたいのであれば、ServiceとActivityを連携させなければならないと思います。「Android Service 画面」なんて感じで検索するとサンプルが見つかると思います。

ただ質問者さんの質問内容やコメントから察すると少々内容が難しいかも知れませ。Activityのライフサイクルとかスレッド、スレッド間のメソッド呼び出しなどはまだ充分お分かりでないように見えるからです。それらがわかってからの方が連携は易しく感じるだろうと思います。もちろんサンプルを見ながら理解を深めてもいいのかも知れません。

投稿2017/05/21 04:51

KSwordOfHaste

総合スコア18392

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問