2013-02-06 16 views
37

मैं इस पर एक कार्रवाई आइटम के साथ एक ActionBar है। कार्रवाई आइटम पर क्लिक करने के बाद, मैं एक पॉपअप मेनू दिखाना चाहता हूं। मैंने इस विधि को लागू किया है, लेकिन मैं इसे लेआउट से किसी भी दृश्य के लिए, कार्रवाई आइटम या ActionBar पर एंकर करना चाहता हूं। MenuItem से इसे एंकर करने के लिए किसी प्रकार का दृश्य कैसे प्राप्त करें?दिखाएँ पॉपअप मेनू क्लिक

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

तो अंत में मैं समाधान मिल गया। जब आप एक्शनबैर में एक्शनआईटम में पॉपअपमेनू को एंकर करना चाहते हैं तो आपको एक्शनआईटम प्रस्तुत करने वाला दृश्य ढूंढना होगा। findViewById() के साथ सरल खोज दृश्य जहां आईडी xml में आपके मेनू आइटम की आईडी के समान है।

दिखा रहा पॉपअप:

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; 
} 

मेनू: यह काम नहीं करता

<?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> 

तो मेनू आइटम दिखाई नहीं देता है (अतिप्रवाह में है)। findViewById शून्य लौटाता है इसलिए आपको इस स्थिति और एंकर को दूसरे दृश्य में देखना होगा।

+8

findViewById (R.id.menu_overflow) मेरे एक अशक्त दृश्य – ingsaurabh

+5

findViewById (R.id.menu_overflow) अशक्त आप नहीं गतिविधि जड़ ध्यान में रखते हुए पाते हैं देता है देता है। PopupMenu में विशिष्ट वस्तुओं के बीच एक विभक्त जोड़ने के लिए Activity.findViewById (R.id.menu_overflow) और सब कुछ ठीक =)) – maXp

+0

यह संभव है का उपयोग करें? –

-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

खेद है कि मैं सही उपयोग खोजने के लिए PopupMenu बनाया के लिए जब ActionItem क्लिक किया चाहते हैं। कोई कामकाज नहीं – pcu

+0

प्रश्न PopupMenu के बारे में है और AlertDialog नहीं है। – JaydeepW

संबंधित मुद्दे