Android 不';t调用onMenuItemClick首次-SherlockListActivity
我使用Sherlocklist活动, 我用一个项目创建了ActionBar&它的clickListener 当我在创建活动后第一次单击它时,不会调用onMenuItemClick,但在第一次单击后的每次单击中,都会毫无问题地工作 为什么?Android 不';t调用onMenuItemClick首次-SherlockListActivity,android,android-actionbar,actionbarsherlock,onclicklistener,optionmenu,Android,Android Actionbar,Actionbarsherlock,Onclicklistener,Optionmenu,我使用Sherlocklist活动, 我用一个项目创建了ActionBar&它的clickListener 当我在创建活动后第一次单击它时,不会调用onMenuItemClick,但在第一次单击后的每次单击中,都会毫无问题地工作 为什么? 原因是您正在调用onoptionItemSelected()方法中的item.setOnMenuItemClickListener(新的OnMenuItemClickListener(){…) 这意味着它将在您第一次单击菜单项时设置(然后在每次单击时重置),其
原因是您正在调用
onoptionItemSelected()
方法中的item.setOnMenuItemClickListener(新的OnMenuItemClickListener(){…
)
这意味着它将在您第一次单击菜单项时设置(然后在每次单击时重置),其中的代码仅在您至少单击一次后才会运行
在onCreateOptionsMenu()
中调用此函数,或者只需将代码从onMenuItemClick()
移动到开关/案例中即可
private void BuildTopActionBar() {
BitmapDrawable bg = (BitmapDrawable) getResources().getDrawable(
R.drawable.ic_action_bg);
bg.setTileModeXY(TileMode.REPEAT, TileMode.REPEAT);
getSupportActionBar().setBackgroundDrawable(bg);
this.getSupportActionBar().setDisplayHomeAsUpEnabled(true);
this.getSupportActionBar().setHomeButtonEnabled(true);
this.getSupportActionBar().setTitle("bookmarks");
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case android.R.id.home:
// This is called when the Home (Up) button is pressed in the Action Bar.
finish();
return true;
case add_bookmark_item:
// add
item.setOnMenuItemClickListener(new OnMenuItemClickListener() {
public boolean onMenuItemClick(MenuItem item) {
customAmbilWarnaDialog dialog = new customAmbilWarnaDialog(
BookMarksActivity.this, 0xffffffff,
new OnAmbilWarnaListener() {
public void onCancel(
customAmbilWarnaDialog dialog) {
}
public void onOk(customAmbilWarnaDialog dialog,
int color, String name, int hasName) {
myDbHelper.AddNewBookmark(name,
currentPageNum, color, hasName);
// code
lv.smoothScrollToPosition((lv.getCount() - 1));
}
});
dialog.show();
return true;
}
});
}
return super.onOptionsItemSelected(item);
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
menu.add(0, add_bookmark_item, 0, "add bookmark")
.setIcon(R.drawable.bookmark_add)
.setShowAsAction(
MenuItem.SHOW_AS_ACTION_COLLAPSE_ACTION_VIEW
| MenuItem.SHOW_AS_ACTION_ALWAYS);
return true;
}