android:onClick在xml中的menuitem上设置

时间:2012-12-05 02:46:32

标签: android xml menu onclick menuitem

亲爱的,我们可以在xml中使用onclick菜单项。如下所示。我试过但它不起作用。

<menu xmlns:android="http://schemas.android.com/apk/res/android" >

<item
    android:id="@+id/logout"
    android:onClick="onLogOut"
    android:title="@string/logout">
</item>

Java代码:

public void onLogOut(MenuItem v) {
    Utility.LogError(TAG, "onLogOut Clicked");
    Toast.makeText(this, "onLogOut", Toast.LENGTH_SHORT).show();
}

}

onLogOut没有被调用....

3 个答案:

答案 0 :(得分:5)

使用

android:onClick="onLogOutClick"

而不是

android:onClick="@string/onLogOutClick"

用菜单项添加onclick

和在Java中我们应该为这个onlick

编写方法
public void onLogOutClick(MenuItem item) {
     Log.d("MenuItem", "onLogOutClick :: "+item.getItemId());  
}

答案 1 :(得分:1)

您是否已尝试使其与onOptionItemSelected()函数一起使用?

<强> onOptionsItemSelected

  

在API级别1中添加

     

boolean onOptionsItemSelected(MenuItem item)

     

只要选择了选项菜单中的项目,就会调用此挂钩。默认实现只返回false以进行正常处理(调用项目的Runnable或根据需要向其Handler发送消息)。您可以将此方法用于您希望在没有其他设施的情况下进行处理的任何项目。

修改

我也在Handling click events

找到了这个

处理点击事件

  

要在用户选择菜单项时执行操作,您必须实现PopupMenu.OnMenuItemClickListener接口,并通过调用setOnMenuItemclickListener()将其注册到PopupMenu。当用户选择一个项目时,系统会在您的界面中调用onMenuItemClick()回调。

例如(例子来自网站):

 public void showMenu(View v) {
    PopupMenu popup = new PopupMenu(this, v);

    // This activity implements OnMenuItemClickListener
    popup.setOnMenuItemClickListener(this);
    popup.inflate(R.menu.actions);
    popup.show();
}

@Override
public boolean onMenuItemClick(MenuItem item) {
    switch (item.getItemId()) {
        case R.id.archive:
            archive(item);
            return true;
        case R.id.delete:
            delete(item);
            return true;
        default:
            return false;
    }
}

因此,如果您插入onOptionsItemSelected或onMenuItemClick,您应该可以接收来自onLogOut的调用。

答案 2 :(得分:0)

那是因为它只适用于XML 布局,有一个菜单。对于菜单,您应该覆盖onItemMenuSelected()方法。阅读the documentation

编辑:

糟糕!显然它是可能的,但仅限于Honeycomb及以后。