AlertDialog
アイテムのListView
とコンテキストメニューを表示する必要がありListView
ます。AlertDialog.Builder
私はを使用して呼び出すことを好むsetItems()
ので、は私のために様式化されたレイアウトで内部Builder
を作成します。様式化のためにそれは内部のAndroidリソースを使用するので、コードに再実装することはできません。ListView
AlertDialog
問題は、デフォルトの実装のためにコンテキストメニュー項目のクリックイベントをキャッチできないことですAlertDialog.onMenuItemSelected()
。これは、そのようなイベントを親に転送しません。
public boolean onMenuItemSelected(int featureId, MenuItem item) {
return false;
}
クラスを拡張して、オーバーライドする必要があるため、オーバーライドされたAlertDialog.Builder
独自のインスタンスを作成するように強制することはできません。ただし、派生クラスからはアクセスできないプライベート変数を使用します。AlertDialog
onMenuItemSelected()
AlertDialog.Builder.create()
P
public AlertDialog create() {
final AlertDialog dialog = new AlertDialog(P.mContext, mTheme, false);
P.apply(dialog.mAlert);
dialog.setCancelable(P.mCancelable);
if (P.mCancelable) {
dialog.setCanceledOnTouchOutside(true);
}
dialog.setOnCancelListener(P.mOnCancelListener);
if (P.mOnKeyListener != null) {
dialog.setOnKeyListener(P.mOnKeyListener);
}
return dialog;
}
カスタムを強制的AlertDialog.Builder
に構築する方法はありますかAlertDialog
(onMenuItemSelected
メソッドをオーバーライドして)?