androidにてクリックイベントのオーバーライドの仕方について教えてください
気になる質問をクリップする
クリップした質問は、後からいつでもMYページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
回答2件
0
ベストアンサー
TextViewにonClickメソッドは存在しません。そのため、なんらかの共通化をオーバーライドで解決するというのは何かの勘違いだと思います。
ここからは予想ですが、クリックされた時にカスタムTextViewで定義したデフォルトの処理を行い、Activityで定義した処理を行いたいのであれば下記の方針で解決できそうです。
1-インターフェースを定義する。
2-カスタムTextViewでsetOnClickListnerを使用し、デフォルトの処理を定義する。
3-カスタムTextViewのonClick内でインターフェースのメソッドを呼び出す。
4-Activityにインターフェースを実装し、カスタムTextViewに設定する。
投稿2017/08/05 08:29
総合スコア18155
0
質問が分かりづらくて、「TextViewをextendしたクラス」に対してなのか「Activityをextendしたクラス」なのか分からないので、2つとも書いてみます。
- 「TextViewをextendしたクラス」に対してオーバーライドを行う
Java
1package com.example.myapplication; 2 3import android.content.Context; 4import android.util.AttributeSet; 5import android.view.MotionEvent; 6 7public class TouchEventView extends ExtendedView { 8 // Default constructor when inflating from XML file 9 public TouchEventView(Context context, AttributeSet attrs) { 10 this(context, attrs, 0); 11 } 12 13 // Default constructor override 14 public TouchEventView(Context context, AttributeSet attrs, int defStyle) { 15 super(context, attrs, defStyle); 16 } 17 18 @Override 19 public boolean onTouchEvent(MotionEvent event) { 20 switch (event.getAction()) { 21 case MotionEvent.ACTION_DOWN: 22 // ここにタップ時の動作を書く 23 24 } 25 return false; 26 } 27}
- 「Activityをextendしたクラス」に対してオーバーライドを行う
Java
1package com.example.myapplication; 2 3import android.os.Bundle; 4import android.view.View; 5import android.view.View.OnTouchListener; 6import android.view.MotionEvent; 7 8public class TouchEventActivity extends ExtendedActivity implements OnTouchListener { 9 @Override 10 public void onCreate(Bundle savedInstanceState) { 11 super.onCreate(savedInstanceState); 12 setContentView(R.layout.activity_main); 13 14 // 事前にxmlにtext_viewを定義してある場合 15 View v = this.findViewById(R.id.text_view); 16 v.setOnTouchListener(this); 17 } 18 19 public boolean onTouch(View v, MotionEvent event) { 20 switch (event.getAction()) { 21 case MotionEvent.ACTION_DOWN: 22 // ここにタップ時の動作を書く 23 24 } 25 return false; 26 } 27}
(Activity.onTouchEvent()を使う方法もありますが、TextView以外をタップしても反応してしまうと思われますので、省略します)
投稿2017/08/05 07:08
総合スコア9803
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2017/08/05 07:37
退会済みユーザー
2017/08/05 08:50
2017/08/05 09:30
2017/08/05 09:51
退会済みユーザー
2017/08/05 10:05
あなたの回答
tips
太字
斜体
打ち消し線
見出し
引用テキストの挿入
コードの挿入
リンクの挿入
リストの挿入
番号リストの挿入
表の挿入
水平線の挿入
プレビュー
質問の解決につながる回答をしましょう。 サンプルコードなど、より具体的な説明があると質問者の理解の助けになります。 また、読む側のことを考えた、分かりやすい文章を心がけましょう。