Question

I have this code, this works perfect. Only i want to make this dynamic without the xml file(actions.xml). How do i do that?

public void showPopup(View v) {
    PopupMenu popup = new PopupMenu(this, v);
    MenuInflater inflater = popup.getMenuInflater();
    inflater.inflate(R.menu.actions, popup.getMenu());
    popup.show();
}
Was it helpful?

Solution

Use popup.getMenu() and then add items directly using the various overloads of add.

OTHER TIPS

in the xml file remove unused items (just to implement menu theme). So, it'll be like :

<menu xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:theme="@style/AppTheme" />

then use getMenu to add new menu items as below:

Button btn1= (Button) findViewById(R.id.btn_test);
PopupMenu popup = new PopupMenu(yourFormName.this, btn1);  
                    //Inflating the Popup using xml file  
                 popup.getMenu().add("Menu1 Label");
                 popup.getMenu().add("Menu2 Label");
                 popup.getMenuInflater().inflate(R.menu.YourXMLFileName, popup.getMenu());  


                    //registering popup with OnMenuItemClickListener  
                    popup.setOnMenuItemClickListener(new PopupMenu.OnMenuItemClickListener() {  
                     public boolean onMenuItemClick(MenuItem item) {  
                       //---your menu item action goes here ....
                      Toast.makeText(DisplayTransactions.this,"You Clicked : " + item.getTitle(),Toast.LENGTH_SHORT).show();  
                      return true;  
                     }  
                    });  
                    popup.show();//showing popup menu  
Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top