2017-01-09 11 views
0

ToolbarMenuItemからPopupMenuを表示する必要があるアプリケーションをビルドしています。問題は、MenuItemで2回クリックして、PopupMenuが表示されることです。MenuItemを2回クリックする必要があります。

マイコード:

@Override 
    public boolean onCreateOptionsMenu(Menu menu) { 
     MenuInflater inflater = getMenuInflater(); 
     inflater.inflate(R.menu.lobby_activity_menu, menu); 


     return true; 
    } 

    @Override 
    public boolean onOptionsItemSelected(MenuItem item) { 
     mFilterMenuItem = findViewById(R.id.action_search_filter_menu_item); 
     switch (item.getItemId()) { 
      case R.id.action_search_menu_item: { 
       Toast.makeText(this, "Search button clicked", Toast.LENGTH_SHORT).show(); 
       return true; 
      } 
      case R.id.action_search_filter_menu_item:{ 

       mFilterMenuItem.setOnClickListener(new View.OnClickListener() { 
        @Override 
        public void onClick(View v) { 
         TileMenu tileMenu = new TileMenu(GuestActivity.this, v, R.menu.filter_menu); 
         Log.e("MENU ITEM", mFilterMenuItem.toString()); 
        } 
       }); 
       return true; 
      } 
      default: { 
       return super.onOptionsItemSelected(item); 
      } 
     } 
    } 

1回のクリックで起動するためにそれを修正する方法は?

+0

とコードのあなたのブロックを交換してみ@Tasdメニュー項目 - クリックされた項目は、メソッド引数 'onOptionsItemSelected(MenuItem item) 'で提供された' MenuItem'です。 –

+0

あなたは日を節約してくれてありがとう!!! –

答えて

0

あなたのメニュー項目を再びonClickListenerを設定する必要はありません:あなたは、あなたの `OnClickListener`を必要としない

case R.id.action_search_filter_menu_item: 
       TileMenu tileMenu = new TileMenu(GuestActivity.this, R.menu.filter_menu); 

      return true; 
+0

ビューは、 –

+0

にアンカーされると予想します。最初のステートメントで作成したmFilterMenuItemオブジェクトを渡すことができます。 – khetanrajesh

0

この

@Override 
    public boolean onOptionsItemSelected(MenuItem item) { 
     mFilterMenuItem = findViewById(R.id.action_search_filter_menu_item); 
     switch (item.getItemId()) { 
      case R.id.action_search_menu_item: { 
       Toast.makeText(this, "Search button clicked", Toast.LENGTH_SHORT).show(); 
       return true; 
      } 
      case R.id.action_search_filter_menu_item:{ 

       Toast.makeText(this, "Search filter button clicked", Toast.LENGTH_SHORT).show(); 
       return true; 
      } 
      default: { 
       return super.onOptionsItemSelected(item); 
      } 
     } 
    } 
+0

あなたはどこでvを手に入れましたか? –

+0

これを試してください。トーストのメッセンジャーが発生していることを確認してください。それは最初のクリック自体で動作するはずです – ChaitanyaAtkuri

関連する問題