2013-02-06 11 views
37

私はActionBarのアクションアイテムを持っています。アクション項目をクリックすると、ポップアップメニューが表示されます。 私はこのメソッドを実装しましたが、アクションアイテムまたはActionBarにアンカーしたいのですが、レイアウトのビューではありません。どのようにMenuItemからそれを固定するためのビューを取得するには?`ActionBar`アイテムのポップアップメニューを表示します。

public boolean onOptionsItemSelected(MenuItem item) { 
    PopupMenu popupMenu = new PopupMenu(this, ??????); // What view goes here? 
    popupMenu.inflate(R.menu.counters_overflow); 
    popupMenu.show(); 
    // ... 
    return true; 
} 
+0

私はこれに似た何かをしています! http://stackoverflow.com/questions/16621070/get-context-of-popupmenu-like-contextmenu – toobsco42

答えて

94

...ここで、完全なソース形式を取得します。 ActionBarのActionItemにポップアップメニューを固定する場合は、ActionItemをレンダリングするビューを見つける必要があります。 findViewById()を使用した単純な検索ビュー。idはxmlのメニュー項目のidと同じです。メニュー項目は、それが動作しない(オーバーフロー)で表示されていない場合

<?xml version="1.0" encoding="utf-8"?> 
<menu xmlns:android="http://schemas.android.com/apk/res/android" > 

    .... 

    <item 
    android:id="@+id/menu_overflow" 
    android:icon="@drawable/ic_overflow" 
    android:showAsAction="ifRoom" 
    android:title="@string/menu_overflow"/> 

    .... 

</menu> 

public boolean onOptionsItemSelected(MenuItem item) { 
    // ... 

    View menuItemView = findViewById(R.id.menu_overflow); // SAME ID AS MENU ID 
    PopupMenu popupMenu = new PopupMenu(this, menuItemView); 
    popupMenu.inflate(R.menu.counters_overflow); 
    // ... 
    popupMenu.show(); 
    // ... 
    return true; 
} 

MENU:ポップアップを表示

。 findViewByIdはnullを返し、この状況をチェックして別のビューにアンカーする必要があります。

+8

findViewById(R.id.menu_overflow)私にヌルビューを与えます – ingsaurabh

+5

アクティビティルートビューで見つからない場合、findViewById(R.id.menu_overflow)はnullを返します。 Activity.findViewById(R.id.menu_overflow)とすべてok =)を使用してください。 – maXp

+0

popupMenuの特定の項目の間に仕切線を追加することは可能ですか? –

-2
public boolean onOptionsItemSelected(MenuItem item) { 
    final View addView = getLayoutInflater().inflate(R.layout.add, null); 

      new AlertDialog.Builder(this).setTitle("Add a Word").setView(addView) 
        .setPositiveButton("OK", new DialogInterface.OnClickListener() { 
         public void onClick(DialogInterface dialog, int whichButton) { 
          addWord((TextView) addView.findViewById(R.id.title)); 
         } 
        }).setNegativeButton("Cancel", null).show(); 
return (super.onOptionsItemSelected(item)); 
    } 

だから最終的に私は解決策を見つけた

http://vimaltuts.com/android-tutorial-for-beginners/android-action-bar-tab-menu-example

+0

申し訳ありませんが、私はActionItemがクリックされたときに作成されたPopupMenuの正しい使い方を見つけたいと思っています。回避策はありません。 – pcu

+0

質問はPopupMenuについてであり、AlertDialogについてではありません。 – JaydeepW

関連する問題