2012-02-27 5 views
1

私は、Androidのプログラミングと学習には初めてです。私は現在、ユーザーが着信音または通知としてサウンドを設定することを可能にするサウンドボードを開発中です。コンテキストメニューが正常にセットアップされたので、コンテキストメニュー内でユーザーがクリックした内容を区別することができます。私の唯一の問題は、どのボタンがコンテキストメニューをトリガしたかを知る方法がわからないことです。誰でも助けることができますか?ContextMenuをトリガしたPass Button

おかげ ジャスティン

編集:私は解決策を見つけることができました。ここで私はそれをやった方法です:それを行うには

@Override 
    public void onCreateContextMenu(ContextMenu menu, View v, 
            ContextMenuInfo menuInfo) { 
     super.onCreateContextMenu(menu, v, menuInfo); 
     MenuInflater inflater = getMenuInflater(); 
     inflater.inflate(R.menu.options_menu, menu); 
     lastButton = (Button) v; 
    } 

@Override 
    public boolean onContextItemSelected(MenuItem item) { 
     AdapterContextMenuInfo info = (AdapterContextMenuInfo) item.getMenuInfo(); 

     switch (item.getItemId()) { 
      case R.id.Ringtone: 
       if(lastButton == SoundButton) 
       Toast.makeText(getApplicationContext(), "Ringtone soundbutton selected", Toast.LENGTH_SHORT).show(); 
       return true; 
      case R.id.Notification: 
       if(lastButton == SoundButtonButton){ 
        Toast.makeText(getApplicationContext(), "Notification soundbutton set", Toast.LENGTH_SHORT).show(); 
       } 

       return true; 
      default: 
       return super.onContextItemSelected(item); 
     } 
    } 

答えて

1

一つの方法は、あなたのコンテキストメニューを登録する前に、ビューのidを設定することです。ボタンを使用している場合:

Button button = ...; 
    button.setId(some_id); 

    Button button2 = ...; 
    button2.setId(some_id_2); 
    ... 

    registerForContextMenu(b); 

    public boolean onContextItemSelected(MenuItem item) 
    { 
     int id = item.getItemId(); 

     if (id == some_id) 
      ... 
     else if (id == some_id_2) 
      ... 
    } 
+0

ボタンのIDを設定すると、レイアウトが乱れる原因となります。いくつかのボタンが互いの上にあります。また、layout.xmlで宣言されているボタンのIDを使用することもできません。 –

+0

私はそれを理解した。助けてくれてありがとう。 –

関連する問題