AlertDialogアイテムのListViewとコンテキストメニューを表示する必要がありListViewます。AlertDialog.Builder私はを使用して呼び出すことを好むsetItems()ので、は私のために様式化されたレイアウトで内部Builderを作成します。様式化のためにそれは内部のAndroidリソースを使用するので、コードに再実装することはできません。ListViewAlertDialog
問題は、デフォルトの実装のためにコンテキストメニュー項目のクリックイベントをキャッチできないことですAlertDialog.onMenuItemSelected()。これは、そのようなイベントを親に転送しません。
public boolean onMenuItemSelected(int featureId, MenuItem item) {
return false;
}
クラスを拡張して、オーバーライドする必要があるため、オーバーライドされたAlertDialog.Builder独自のインスタンスを作成するように強制することはできません。ただし、派生クラスからはアクセスできないプライベート変数を使用します。AlertDialogonMenuItemSelected()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メソッドをオーバーライドして)?