在Android中按下后退按钮重新渲染操作栏

时间:2014-01-15 12:12:31

标签: java android actionbarsherlock

我正在实施购物车Android应用程序,并在ActionBar上显示自定义视图,该视图描述了购物车中没有任何项目。在浏览产品和查看每个产品时(显示在另一个活动中),操作栏上会显示此信息。从视图产品活动中,用户可以单击添加到购物车。单击将通过将数字增加1来更新自定义视图。

自定义视图是:enter image description here

但现在当用户按下后退按钮时,它会转到上一个活动,并且操作栏上的自定义视图显示旧视图,其中项目数较少。如何按后退按钮

更新操作栏的自定义视图

我的自定义视图是:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/actionbar_cart_layout"
android:layout_width="70dp"
android:layout_height="wrap_content" >
    <ImageView
        android:id="@+id/actionbar_cart_image"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="right|center_vertical"
        android:src="@drawable/ic_actionbar_cart" 
        android:layout_alignParentRight="true"/>

    <TextView
        android:id="@+id/actionbar_cart_qty"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:layout_gravity="right|center"
        android:layout_marginLeft="19dp"
        android:layout_marginTop="12dp"
        android:layout_alignLeft="@+id/actionbar_cart_image"
        android:text="0"
        android:textColor="#000000"
        android:textSize="14sp"
        android:textStyle="bold" />
 </RelativeLayout>

我正在处理这样的添加

LayoutInflater inflator = (LayoutInflater) this.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
view = inflator.inflate(R.layout.menuitem_cart, null);
getSupportActionBar().setCustomView(view);

点击添加到购物车我正在更新像这样的视图

TextView cartQry = (TextView) view.findViewById(R.id.actionbar_cart_qty);
    int count = ShoppingCart.getInstance().getTotalItems();
    cartQry.setText(Integer.toString(count));

我正在使用带有最低API版本的ActionBar Sherlock 11

2 个答案:

答案 0 :(得分:0)

根据上面的评论 - 覆盖片段活动中的onResume()方法

@Override
protected void onResume() {
    TextView cartQry = (TextView) view.findViewById(R.id.actionbar_cart_qty);
    int count = ShoppingCart.getInstance().getTotalItems();
    cartQry.setText(Integer.toString(count));

    super.onResume();
}

答案 1 :(得分:0)

@Override
protected void onResume() {
    invalidateOptionsMenu(); 
    super.onResume();
}