0

コンテキストメニューを作成しましたが、選択したタイトルにswitch-caseを使用できないため、itemListenerを機能させることができません(文字列ではなく整数でのみ機能するため)。

アイテムをクリックして何かしたいです。(IFステートメント)でできますが。

public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_overview);
        View view=findViewById(R.id.myView);
        registerForContextMenu(view);
    }

    @Override
    public void onCreateContextMenu(ContextMenu menu, View v,
            ContextMenuInfo menuInfo) {
        super.onCreateContextMenu(menu, v, menuInfo);

    menu.setHeaderTitle("Context Menu");  
        menu.add(0, v.getId(), 0, "Item 1");  
        menu.add(0, v.getId(), 0, "Item 2");  
    }

    @Override
    public boolean onContextItemSelected(MenuItem item) {

        switch(item.getItemId()) {
        case 0: Toast.makeText(this, "Item selected 1", Toast.LENGTH_SHORT).show();

            break;
        case 1: Toast.makeText(this, "Item selected 2", Toast.LENGTH_SHORT).show();

            break;
        default:

    }

        return true;
    }
4

1 に答える 1

0

オプションの両方の ID を同じものに設定しているため、これは機能しません。メソッドの 2 番目の引数は、add()後でクリックされたオプションを決定できるようにするための一意の ID であると想定されています。次のようなものを試してください:

//Class level variables
static int OPTION_ONE = 1;
static int OPTION_TWO = 2;

//Adding the options
menu.add(0, OPTION_ONE, 0, "Item 1");  
menu.add(0, OPTION_TWO, 0, "Item 2"); 

//Determining which one was clicked
switch(item.getItemId()) {
    case OPTION_ONE: 
        Toast.makeText(this, "Item selected 1", Toast.LENGTH_SHORT).show();

        break;
    case OPTION_TWO: 
        Toast.makeText(this, "Item selected 2", Toast.LENGTH_SHORT).show();

        break;
    default:
于 2012-09-23T12:45:16.977 に答える