android动态改变菜单栏,android – 如何动态更改ActionBar菜单项的图标

我想从服务器收到通知时动态更改菜单项的图标.但是,当更改菜单项图标的代码运行时,我收到NullPointerException.

用于更改菜单项图标的代码在onCreatOptionsMenu方法中定义如下:

@Override

public boolean onCreateOptionsMenu(Menu menu) {

// getMenuInflater().inflate(R.menu.main, menu);

this.menu = menu;

if (mDrawerLayout != null && isDrawerOpen())

showGlobalContextActionBar();

MenuInflater menuInflater = this.getMenuInflater();

menuInflater.inflate(R.menu.notification, menu);

return super.onCreateOptionsMenu(menu);

}

}

在updateCount方法中,我正在更改图标如下:

public void updateCount(int count) {

hot_count = count;

System.out.println("Value of count: " + count);

runOnUiThread(new Runnable() {

@Override

public void run() {

// TODO Auto-generated method stub

if (hot_count > 0) {

if(hot_count>0)

{

if (menu != null) {

MenuItem item = menu.findItem(R.id.menu_hotlist);

if (item != null) {

item.setIcon(R.drawable.ic_notification1);

}

}

}

}

}

});

}

这是我的menuitem“通知”文件.

xmlns:tools="http://schemas.android.com/tools"

>

android:actionLayout="@layout/action_bar_notification_icon"

android:showAsAction="always"

android:icon="@drawable/ic_notification"

android:title="Notification" />

这是我的logcat:

01-20 15:03:29.811: E/AndroidRuntime(10318): java.lang.NullPointerException

01-20 15:03:29.811: E/AndroidRuntime(10318): at com.xsinfosol.helpdesk_customer.TAB_Activity$3.run(TAB_Activity.java:294)

01-20 15:03:29.811: E/AndroidRuntime(10318): at android.os.Handler.handleCallback(Handler.java:730)

01-20 15:03:29.811: E/AndroidRuntime(10318): at android.os.Handler.dispatchMessage(Handler.java:92)

01-20 15:03:29.811: E/AndroidRuntime(10318): at android.os.Looper.loop(Looper.java:137)

01-20 15:03:29.811: E/AndroidRuntime(10318): at android.os.HandlerThread.run(HandlerThread.java:61)

01-20 15:04:04.881: I/System.out(11629)

请帮忙.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值