【发布时间】:2013-12-05 15:43:21
【问题描述】:
我已经在我的 android 应用程序中实现了 action bar sherlock。此应用程序具有购物车功能。操作栏上有一个图标,可将用户带到购物车。当将商品添加到购物车并从购物车中删除时,我需要动态更改该图标。那是一个数字应该出现在操作栏中的购物车图标顶部。
下面是截图:
菜单.xml:
<menu xmlns:android="http://schemas.android.com/apk/res/android" >
<item
android:id="@+id/scanner"
android:icon="@drawable/ic_nav_scanner"
android:showAsAction="always"
android:title="@string/scanner"/>
<item
android:id="@+id/cart"
android:icon="@drawable/ic_nav_cart"
android:showAsAction="always"
android:title="@string/cart"/>
<item
android:id="@+id/a_More"
android:icon="@drawable/ic_nav_more"
android:showAsAction="always"
android:title="@string/more">
<menu>
<item
android:id="@+id/location"
android:icon="@drawable/ic_nav_dropdown_location"
android:showAsAction="always"
android:title="@string/location_action"/>
<item
android:id="@+id/fav"
android:icon="@drawable/ic_nav_dropdown_favourite"
android:showAsAction="always"
android:title="@string/favourites"/>
<item
android:id="@+id/info"
android:icon="@drawable/ic_nav_dropdown_information"
android:title="@string/information"/>
</menu>
</item>
</menu>
代码:
@Override
public boolean onCreateOptionsMenu(Menu menu) {
MenuInflater inflater = getSupportMenuInflater();
inflater.inflate(R.menu.aiwmain, menu);
return super.onCreateOptionsMenu(menu);
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
super.onOptionsItemSelected(item);
switch (item.getItemId()) {
case R.id.scanner:
//scanner clicked
break;
}
感谢您对动态更改操作栏上的购物车图标的任何帮助。
//编辑
我设法想出了这一点:
@Override
public boolean onPrepareOptionsMenu(Menu menu) {
DBManager db = DBManager.getSingletonInstance();
int cartItemCount = db.getCartItemCount(this);
MenuItem cart = menu.findItem(R.id.cart);
MenuItem scanner = menu.findItem(R.id.scanner);
if(cartItemCount > 0){
//I want this item to be changed, I do not want to have seperate drawables for all numbers.
cart.setIcon(R.drawable.arrow_left);
}
return super.onPrepareOptionsMenu(menu);
}
【问题讨论】:
-
你应该通过覆盖
onpreparemenuoptions()来添加你的新菜单项 -
你有这方面的示例代码吗?
标签: android menu android-actionbar actionbarsherlock shopping-cart