したがって、Activity 以外のクラスからインテントを呼び出すべきではないことはわかっています。結果を伴うインテントは言うまでもありません。非アクティビティ クラスは単にそれを行うべきではなく、本来行うべきことに対して責任を負うべきではありません。
私が持っているもの
これでNappingActivity
、12 個のボタンを表示する が に実装されましたVideoButtonView
。これらのボタンは伸びandroid.widget.Button
ます。
ボタンをドラッグしてクリックできるようにしたいので、次のようにVideoButtonView
設定して、にドラッグ/クリックロジックを実装しました。
this.setOnTouchListener(new View.OnTouchListener() { … }
ユーザーが 内のボタンをクリックするonTouch(View v, MotionEvent event)
と、以下が呼び出されます。
Context context = v.getContext();
Intent showVideo = new Intent(context, ViewActivity.class);
context.startActivity(showVideo);
ここまでは順調ですね。
私が欲しいもの
さて、このインテントは に戻りますがNappingActivity
、結果を返すことで、この動画再生インテントを分離したいと思います。したがって、理想的には、ではなくstartActivityForResult
からこれを呼び出します。後者はとにかく不可能だからです。NappingActivity
VideoButtonView
質問
ボタンではなくアクティビティ内からクリックを処理できるように、または少なくともそこからインテントを送信できるように、これをリファクタリングするにはどうすればよいですか?
クリック アンド ドラッグ ロジック全体をアクティビティに移動する必要がありますか? あまりきれいに聞こえません。
ある種のカスタム リスナーを実装できますか?