ボタンをクリックしたときにコンテキストメニューを開きたいのですが、ボタンをクリックしたときにどのリストアイテムがフォーカスされているかを知る必要もあります。それを行う方法を知っていますか? onclick
メソッドにはどのコードを含める必要がありますか?
私は同じものを探していて、コンテキストメニューの代わりにダイアログを使用する必要があることがわかりました
final CharSequence[] items = {"Red", "Green", "Blue"};
AlertDialog.Builder builder = new AlertDialog.Builder(this);
builder.setTitle("Pick a color");
builder.setItems(items, new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int item) {
Toast.makeText(getApplicationContext(), items[item], Toast.LENGTH_SHORT).show();
}
});
AlertDialog alert = builder.create();
alert.show();
http://developer.Android.com/guide/topics/ui/dialogs.html#AlertDialog
もしあなたが本当に何らかの理由でそれをしたいなら...(私の場合、怠惰のうち)
アクティビティのonCreate
の間、またはユーザーがボタンに触れる前のどこかで、そのボタンに対してregisterForContextMenu
を実行します。次に、実際のボタンのonClickハンドラーでopenContextMenu(View)
を呼び出します。
たとえば、私はボタンをxmlで宣言しています
<Button
Android:id="@+id/btn_help"
Android:layout_width="wrap_content"
Android:layout_height="wrap_content"
Android:onClick="onHelp"
Android:text="@string/help_btn_text" />
私のonCreateで
registerForContextMenu(findViewById(R.id.btn_help));
およびonHelp関数
public void onHelp(View v) {
openContextMenu(v);
}
これは、ビューvがコンテキストメニューに登録されているビューと同じであるため機能します。
まず、registerForContextMenu(View view)を呼び出してビューを登録する必要があります。次に、onCreateContextMenu()をオーバーライドしてメニューを追加し、最後にonContextItemSelected()をオーバーライドして各メニューにロジックを配置します。
まず、ContextMenu
を使用する理由を知っておく必要があります。ビューのContextMenu
の機能は、PCの右クリックメニューに似ています。これは、一部の項目で「使用可能な操作」を意味します。
あなたの説明によると、実際に必要なのはリスト付きのカスタマイズされたダイアログであり、ボタンをクリックすると表示され、ListView
のフォーカスされたアイテムを取得することもできると思います。次に、本当にメニューを必要とするビューのContextMenu
の登録を保存できます:)