[解決済み】フラグメント内のXML onClickを使用して、ボタンのクリックを処理する方法
2022-03-24 17:29:40
質問
Honeycomb (Android 3)以前は、各Activityがボタンのクリックを処理するように登録されていました。
onClick
タグを使用します。
android:onClick="myClickMethod"
そのメソッドの中で
view.getId()
とswitchステートメントでボタンロジックを実行します。
Honeycombの導入に伴い、私はこれらのアクティビティをフラグメントに分割し、多くの異なるアクティビティ内で再利用できるようにしました。ボタンの動作のほとんどはActivityに依存しないので、コードはFragmentsファイル内に置きたいと思います。
なし
を登録する古い (1.6 以前の) 方法を使用しています。
OnClickListener
を各ボタンに設定します。
final Button button = (Button) findViewById(R.id.button_id);
button.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
// Perform action on click
}
});
問題は、レイアウトを拡張したときに、個々のフラグメントではなく、ホスティングアクティビティがボタンのクリックを受け取ることです。次のような良い方法はありますか?
- ボタンのクリックを受信するフラグメントを登録しますか?
- Activityのクリックイベントを、所属するフラグメントに渡しますか?
どのように解決するのですか?
こうすればいいんじゃない?
活動内容
Fragment someFragment;
//...onCreate etc instantiating your fragments
public void myClickMethod(View v) {
someFragment.myClickMethod(v);
}
断片です。
public void myClickMethod(View v) {
switch(v.getId()) {
// Just like you were doing
}
}
フラグメントを再利用できるようにカップリングを減らしてほしいという @Ameen さんへの返答です。
インターフェース
public interface XmlClickable {
void myClickMethod(View v);
}
活動内容
XmlClickable someFragment;
//...onCreate, etc. instantiating your fragments casting to your interface.
public void myClickMethod(View v) {
someFragment.myClickMethod(v);
}
断片です。
public class SomeFragment implements XmlClickable {
//...onCreateView, etc.
@Override
public void myClickMethod(View v) {
switch(v.getId()){
// Just like you were doing
}
}
関連
-
[解決済み】Android Studioでパラメータ化されたユニットテストを実行すると、指定されたインクルードに対するテストが見つからないエラーが発生する
-
[解決済み】インストールエラー。インストールエラー:install_failed_older_sdk
-
[解決済み】apkファイルのインストール中に「パッケージが破損しているようです」というエラーが発生する。
-
[解決済み] 起動アクティビティを特定できませんでした。デフォルトのアクティビティが見つかりませんでした
-
[解決済み] android.support.design.widget.FloatingActionButton クラスの展開に失敗しました。
-
[解決済み] Android Fragment no view found for ID?
-
[解決済み] Androidでイメージビューの背景を透明に設定する
-
[解決済み] Android Fragment onAttach() 非推奨
-
[解決済み] インスタンス状態の保存を使用してアクティビティ状態を保存するにはどうすればよいですか?
-
[解決済み】Fragmentが自分自身を削除する、つまりfinish()に相当するものを取得するにはどうすればよいですか?)
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】「ArrayAdapterはリソースIDがTextViewであることが必要」XMLの問題点
-
[解決済み】OnFragmentInteractionListenerを実装する方法
-
[解決済み] カスタムアダプタからnotifyDataSetChangeが機能しない
-
[解決済み】アンドロイドクロームブラウザのモバイルウェブアプリケーションのメニューでHTMLユニコード ☰が検出されない。
-
[解決済み】Dalvikとdalvik-cacheとは何ですか?
-
[解決済み】android.content.ActivityNotFoundException: 明示的なアクティビティクラスを見つけることができません。
-
[解決済み】Android 8:クリアテキストのHTTPトラフィックが許可されない
-
[解決済み] Android Fragment no view found for ID?
-
[解決済み] Android: @drawable/picture を drawable に変換するのに失敗しました。
-
[解決済み] setBackgroundDrawable() 非推奨