Ady*_*ari 2 android menuitem android-2.3-gingerbread android-actionbar
所以我在动作栏上有菜单项.在onOptionsItemSelected上,我想更改菜单项图像.
这是我的代码
@Override
public boolean onOptionsItemSelected(MenuItem item) {
// Handle presses on the action bar items
switch (item.getItemId()) {
case R.id.todaySched:{
viewTodaySched();
item.setIcon(R.drawable.calendarselected);
infoLog=(MenuItem)findViewById(R.id.infoLog);
infoLog.setIcon(R.drawable.book);
return true;}
case R.id.infoLog:{
viewInfoLog();
item.setIcon(R.drawable.bookselected);
todaySched=(MenuItem)findViewById(R.id.todaySched);
todaySched.setIcon(R.drawable.calenderselected);
return true;}
default:
return super.onOptionsItemSelected(item);
}
}
Run Code Online (Sandbox Code Playgroud)
但是当我点击它时图标不会改变,我得到了运行时错误.例如:当我点击todaySched图标时,好像我无法获取infoLog项目ID.
我的LogCat:LogCat
根据你的logcat,你得到了类强制转换异常,你已经使用了sharlockactionbar.所以请尝试检查您是否导入了正确的MenuItem和Menu,它们应该是这样的:
import com.actionbarsherlock.view.MenuItem;
and
import com.actionbarsherlock.view.Menu;
Run Code Online (Sandbox Code Playgroud)
代替
import android.view.MenuItem;
and
import android.view.Menu;
Run Code Online (Sandbox Code Playgroud)
编辑:
以下是只需单击一下即可更改两个图标的方法:
private Menu menu;
private MenuItem item1, item2;
Boolean original = true;
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getSupportMenuInflater().inflate(R.menu.menu, menu);
this.menu = menu;
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
int id = item.getItemId();
if (id == R.id.todaySched) {
update();
} else if (id == R.id.infoLog) {
update();
}
return true;
}
private void update() {
item1 = menu.findItem(R.id.todaySched);
item2 = menu.findItem(R.id.infoLog);
if (original) {
item1.setIcon(getResources().getDrawable(
android.R.drawable.ic_menu_search));
item2.setIcon(getResources().getDrawable(
android.R.drawable.ic_menu_report_image));
original = false;
} else if (!original) {
item1.setIcon(getResources().getDrawable(
android.R.drawable.ic_menu_my_calendar));
item2.setIcon(getResources().getDrawable(
android.R.drawable.ic_menu_info_details));
original = true;
}
}
Run Code Online (Sandbox Code Playgroud)
检查并正在工作.现在根据您的要求使用它..
干杯....
| 归档时间: |
|
| 查看次数: |
24151 次 |
| 最近记录: |