相关疑难解决方法(0)

使用actionLayout(SherlockActionBar)时未调用onOptionsItemSelected

在菜单项中使用actionLayout时,不会调用onOptionsItemSelected方法.我错过了什么,或者它是SherlockActionBar的已知问题?

活动

@Override
public boolean onCreateOptionsMenu(Menu menu) {
    MenuInflater inflater = getSupportMenuInflater();
    inflater.inflate(R.menu.article, menu);

    super.onCreateOptionsMenu(menu);

    return true;
}

@Override
public boolean onOptionsItemSelected(MenuItem item) {   

    Log.d(TAG, "onOptionsItemSelected()");

    switch (item.getItemId()) {        
        case android.R.id.home:            
            finish();      
            return true; 
        case R.id.menu_item_comment:
            return true;
        default:            
            return super.onOptionsItemSelected(item);    
    }
}
Run Code Online (Sandbox Code Playgroud)

菜单

<item android:id="@+id/menu_item_comment"
    android:showAsAction="ifRoom"
    android:actionLayout="@layout/action_bar_comment_layout"/>
Run Code Online (Sandbox Code Playgroud)

android

43
推荐指数
3
解决办法
3万
查看次数

使用自定义操作视图时,不会调用onOptionsItemSelected

我为我的一个操作栏MenuBar设置了一个自定义视图

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {

        getMenuInflater().inflate(R.menu.loop_thread, menu);
        ImageView iv = (ImageView)(getLayoutInflater().inflate(R.layout.image_container, null));
        menu.findItem(R.id.action_filter).setActionView(iv);
        ...
Run Code Online (Sandbox Code Playgroud)

但是当我在我的应用程序中点击该菜单项时,onOptionsItemSelected()不会被调用.(我已经通过在方法开头设置断点来验证这一点).如果我点击其他按钮,在操作栏中,会调用onOptionsItemSelected().

这是自定义视图的xml代码:

<?xml version="1.0" encoding="utf-8"?>
<ImageView xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/ibtnFilterMenu"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:background="@android:color/darker_gray"
    android:src="@drawable/btn_action_down_arrow"
    style = "@android:style/Widget.ActionButton"/>
Run Code Online (Sandbox Code Playgroud)

我也尝试在菜单xml文件上设置Action视图:

    <item android:id="@+id/action_filter"
    android:title="@string/filter_options"
    android:actionLayout="@layout/image_container"
    android:orderInCategory="100"
    android:showAsAction="ifRoom" />
Run Code Online (Sandbox Code Playgroud)

注:我知道我可以使图像可点击,并手动设置onClickListener它,但对于学习的缘故,我想要去的这条底线.

android

17
推荐指数
1
解决办法
7510
查看次数

为菜单项设置布局时,不调用OnMenuItemSelected

我有一个从main_menu.xml膨胀的菜单:

<menu xmlns:android="http://schemas.android.com/apk/res/android">
    <item 
        android:id="@+id/act_sync" 
        android:showAsAction="always"
        android:actionLayout="@layout/sync_action"
        android:icon="@android:drawable/ic_popup_sync" />
</menu>
Run Code Online (Sandbox Code Playgroud)

这是活动中的代码:

@Override
public boolean onCreateOptionsMenu(Menu menu) {
    getMenuInflater().inflate(R.menu.main_menu, menu);
    return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
    MyMessageHandler.debug("menu item selected");
    switch(item.getItemId()){
    case R.id.act_sync:
        sync();
        return true;
    }
    return super.onOptionsItemSelected(item);
}
Run Code Online (Sandbox Code Playgroud)

但是当我触摸菜单项时,不会调用onOptionsItemSelected.当我删除菜单项的actionLayout属性时,它工作正常.我怎样才能解决这个问题?
谢谢.

android menuitem android-layout android-inflate android-actionbar

16
推荐指数
2
解决办法
7193
查看次数