2016-02-25 35 views
1

我试图设置购物车图标以添加到购物车功能。虽然我运行应用程序我得到这个错误工具栏菜单项错误

尝试一个空对象上调用虚拟方法android.view.View android.widget.RelativeLayout.findViewById(int)的' 参考

这里我使用的是AppCompatActivity。

我的代码是在这里: MainActivity.java

@Override 
    public boolean onCreateOptionsMenu(Menu menu) { 
     getMenuInflater().inflate(R.menu.main, menu); 
     RelativeLayout badgeLayout = (RelativeLayout) menu.findItem(R.id.badge).getActionView(); 
     mCounter = (TextView) badgeLayout.findViewById(R.id.counter); 
     return true; 
} 

menu.xml文件:

<item 
    android:id="@+id/badge" 
    android:actionLayout="@layout/badge_layout" 
    android:title="Badges" 
    app:showAsAction="always"> 
</item> 

badge_layout.xml

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
     android:layout_width="48dp" 
     android:layout_height="fill_parent" 
     android:layout_gravity="right" > 

     <ImageView 
      android:layout_width="wrap_content" 
      android:layout_height="fill_parent" 
      android:clickable="true" 
      android:src="@drawable/ic_shopping_cart"/> 

     <TextView 
      android:id="@+id/counter" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:layout_alignParentRight="true" 
      android:padding="8dp" 
      android:text="12" 
      android:textSize="10sp" 
      android:textColor="@color/colorPrimary" /> 
    </RelativeLayout> 
+1

问题就在这里'RelativeLayout的badgeLayout =(RelativeLayout的)menu.findItem(R.id.badge).getActionView();' –

+0

什么问题?请纠正它。 –

+1

http://stackoverflow.com/questions/8614293/android-get-view-reference-to-a-menu-item –

回答

1

终于拿到了车图标。 替换此

<item 
      android:id="@+id/badge" 
      android:actionLayout="@layout/badge_layout" //Check this LINE 
      android:title="Badges" 
      android:actionViewClass="android.widget.RelativeLayout" 
      app:showAsAction="always"> 
     </item> 

<item 
     android:id="@+id/badge" 
     app:actionLayout="@layout/badge_layout" //Check this LINE(Changes made here) 
     android:title="Badges" 
     android:actionViewClass="android.widget.RelativeLayout" 
     app:showAsAction="always"> 
    </item> 
+1

继续前进#PS。 –