2015-10-23 10 views
7

To jest mój kodJak uzyskać widok działania elementu menu?

home.xml

<item 
    android:id="@+id/action_shopping_cart" 
    android:actionLayout="@layout/action_bar_cart_button" 
    android:showAsAction="ifRoom" 
    android:title="Shopping Cart" /> 
<item 
    android:id="@+id/action_notifications" 
    android:actionLayout="@layout/action_bar_notifications_button" 
    android:showAsAction="ifRoom" 
    android:title="Notifications" /> 
<item 
    android:id="@+id/menu_overflow" 
    android:orderInCategory="100" 
    android:icon="@drawable/ic_action_overflow" 
    android:showAsAction="always" 
    android:title="OverFlow"> 

    <menu> 
     <item 
      android:id="@+id/action_my_account" 
      android:orderInCategory="100" 
      android:showAsAction="never" 
      android:title="My Account" /> 
     <item 
      android:id="@+id/action_current_orders" 
      android:orderInCategory="100" 
      android:showAsAction="never" 
      android:title="My Orders" /> 
     <item 
      android:id="@+id/action_wish_list" 
      android:orderInCategory="100" 
      android:showAsAction="never" 
      android:title="My Wishlist" /> 
     <item 
      android:id="@+id/action_contact_us" 
      android:orderInCategory="100" 
      android:showAsAction="never" 
      android:title="Contact Us" /> 
     <item 
      android:id="@+id/action_logout" 
      android:orderInCategory="100" 
      android:showAsAction="never" 
      android:title="Logout" /> 
    </menu> 
</item> 

chcę View "menu_overflow" jak mogę odebrać?

Próbowałem następujący sposób:

Activity.java kod

publicznego onCreateOptionsMenu (MENU) logiczna {

 final MenuItem item = menu.findItem(R.id.menu_overflow); 
     View view = (View) findViewById(R.id.menu_overflow); 
     new MaterialShowcaseView.Builder(this) 
         .setTarget(mOverFlowIcon) 
         .setRadius(10) 
         .setMaskColour(Color.argb(150, 0, 0, 0)) 
         .setContentText("Find Your Wishlist Here") // optional but starting animations immediately in onCreate can make them choppy 
         .setDismissOnTouch(true) 
         .show(); 
    return super.onCreateOptionsMenu(menu); 
} 

Ale wraca pogląd jest zerowy.

Proszę o pomoc ... thanx

+0

@Harshad Proszę sprawdzić kod aktywności –

Odpowiedz

0

Czy próbowałeś tego?

@Override 
    public boolean onCreateOptionsMenu(Menu menu) { 
     // Inflate the menu; this adds items to the action bar if it is present. 
     getMenuInflater().inflate(R.menu.menu_main, menu); 
     return true; 
    } 

    @Override 
    public boolean onOptionsItemSelected(MenuItem item) { 
     // Handle action bar item clicks here. The action bar will 
     // automatically handle clicks on the Home/Up button, so long 
     // as you specify a parent activity in AndroidManifest.xml. 

     switch (item.getItemId()){ 
      case R.id.action_shopping_cart: 
       Toast.makeText(this, "action_shopping_cart", Toast.LENGTH_SHORT).show(); 
       break; 
      case R.id.action_notifications: 
       Toast.makeText(this, "action_notifications", Toast.LENGTH_SHORT).show(); 
       break; 
      case R.id.menu_overflow: 
       Toast.makeText(this, "menu_overflow", Toast.LENGTH_SHORT).show(); 
       break; 
      case R.id.action_my_account: 
       Toast.makeText(this, "action_my_account", Toast.LENGTH_SHORT).show(); 
       break; 
      case R.id.action_current_orders: 
       Toast.makeText(this, "action_current_orders", Toast.LENGTH_SHORT).show(); 
       break; 
      case R.id.action_wish_list: 
       Toast.makeText(this, "action_wish_list", Toast.LENGTH_SHORT).show(); 
       break; 
      case R.id.action_contact_us: 
       Toast.makeText(this, "action_contact_us", Toast.LENGTH_SHORT).show(); 
       break; 
      case R.id.action_logout: 
       Toast.makeText(this, "action_logout", Toast.LENGTH_SHORT).show(); 
       break; 



     } 



     return super.onOptionsItemSelected(item); 
    } 

dbać o imieniu swoim xml (czyli home.xml)

+0

dzięki za odpowiedź ... Chcę menu_overflow widok na onOptionsCreate. Prezentuję samouczek dotyczący ikony przepełnienia, dlatego chcę wyświetlić widok menu nad przepływem. Czy wiesz, jak to uzyskać? –

8

Czy pompowania menu w onCreateOptionsMenu? Wygląda na to, że po uruchomieniu menu onCreateOptions, inflacja xml jest dodawana do kolejki zdarzeń, zamiast natychmiastowego nadmuchiwania. To właśnie powoduje twój zerowy wskaźnik po uruchomieniu findViewById(). Spróbuj umieścić podgląd widoku wewnątrz Handler'a. Kod w procedurze obsługi jest dodawany do kolejki komunikatów i dlatego będzie wykonywany po zawyżeniu menu. To rozwiąże twój zerowy wskaźnik. Będzie to wyglądać mniej więcej tak:

@Override 
public boolean onCreateOptionsMenu(Menu menu) { 
    // Inflate the menu; this adds items to the action bar if it is present. 
    getMenuInflater().inflate(R.menu.menu_main, menu); 
    new Handler().post(new Runnable() { 
     @Override 
     public void run() { 
      View view = (View) findViewById(R.id.menu_overflow); 
      new MaterialShowcaseView.Builder(this) 
        .setTarget(view) 
        .setRadius(10) 
        .setMaskColour(Color.argb(150, 0, 0, 0)) 
        .setContentText("Find Your Wishlist Here") // optional but starting animations immediately in onCreate can make them choppy 
        .setDismissOnTouch(true) 
        .show(); 
     } 
    }); 
    return true; 
} 
1

spróbuj:

<item 
    android:id="@+id/menu_overflow" 
    android:orderInCategory="100" 
    android:icon="@drawable/ic_action_overflow" 
    android:title="OverFlow" 
    app:showAsAction="always" 
    app:actionViewClass="android.widget.ImageButton"> 

Uwaga Ta linie:

app:showAsAction="always" 
    app:actionViewClass="android.widget.ImageButton" 
2

można uzyskać odniesienie do MenuItem poprzez nadpisanie metody onPrepareOptionsMenu(Menu):

@Override 
public boolean onPrepareOptionsMenu(Menu menu) { 
    MenuItem actionViewItem = menu.findItem(R.id.your_menu_item); 
    return super.onPrepareOptionsMenu(menu); 
} 

Jeśli chcesz odniesienie do ActionView można to zrobić za pomocą metody MenuItemCompat.getActionView(MenuItem):

@Override 
public boolean onPrepareOptionsMenu(Menu menu) { 
    MenuItem actionViewItem = menu.findItem(R.id.your_menu_item); 
    View v = MenuItemCompat.getActionView(actionViewItem); 
    return super.onPrepareOptionsMenu(menu); 
} 
Powiązane problemy