21

ボタンをクリックしたときにコンテキスト メニューを開きたいのですが、ボタンをクリックしたときにどのリスト項目がフォーカスされているかを知る必要があります。その方法を知っていますか?メソッドにはどのコードを含める必要がありonclickますか?

4

4 に答える 4

58

私は同じものを探していましたが、コンテキストメニューの代わりにダイアログを使用する必要があることがわかりました

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

于 2011-05-26T13:37:22.703 に答える
26

なんらかの理由で本当にやりたい場合...(私の場合、怠惰から)

アクティビティ中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 がコンテキスト メニューに登録されているビューと同じであるため機能します。

于 2012-05-04T22:39:44.720 に答える
4

まず、registerForContextMenu(View view)を呼び出してビューを登録する必要があります。次に、onCreateContextMenu()をオーバーライドしてメニューを追加し、最後にonContextItemSelected()をオーバーライドして各メニューにロジックを配置します。

于 2011-04-13T07:13:12.453 に答える
1

まず、なぜ を使用する必要があるのか​​を理解する必要がありますContextMenu。ビューの機能はContextMenu、PC の右クリック メニューに似ています。これは、アイテムで「使用可能な操作」を意味します。

あなたの説明によると、実際に必要なのは、 List を持つカスタマイズされた Dialogだと思います。これは、 Button をクリックすると表示され、あなたのフォーカスされたアイテムを取得することもできますListViewContextMenu次に、本当にメニューが必要な一部のビューの登録を保存できます:)

于 2011-04-13T07:15:06.683 に答える