2012-12-05 31 views
0

親愛的我們可以使用onclick和xml中的菜單項。像下面。我試過但它不工作。android:onClick在xml中設置menuitem

<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沒有得到所謂....

+0

你的'onLogOut()'函數在哪裏?因爲他們需要參與活動。不幸的是,你不能讓他們在片段 – drspaceboo

+0

是的,我把它放在活動中,並且改變它的簽名,但它仍然沒有被調用。 下面給出新的簽名 公共布爾onLogOut(MenuItem v){} 現在它返回布爾值。 仍然沒有被調用:) – DroidEngineer

+0

我只注意到操作系統也拋出一些特殊的信息,如 12-05 08:50:00.509:W/InputManagerService(59):窗口已經聚焦,忽略焦點收益:com。 [email protected] http://stackoverflow.com/questions/3140524/geting-window-already-focused-ignoring-focus-gain-of-com-android-internal-vie – DroidEngineer

回答

4

使用

android:onClick="onLogOutClick" 

代替

android:onClick="@string/onLogOutClick" 

與菜單項的onclick加入

和而在Java中,我們應該寫這個點擊數

public void onLogOutClick(MenuItem item) { 
    Log.d("MenuItem", "onLogOutClick :: "+item.getItemId()); 
} 
+0

Java代碼 \t公共無效onLogOut(菜單項項){ \t \t Utility.LogError(TAG, 「onLogOutClicked」); \t} XML是 <菜單的xmlns:機器人= 「http://schemas.android.com/apk/res/android」> <項 機器人:ID = 「@ + ID /登出」 機器人:的onClick = 「onLogOut」 機器人:標題= 「@字符串/註銷」> – DroidEngineer

+0

其仍然沒有工作:) – DroidEngineer

+0

看到這個問題的ü可能有助於https://github.com/JakeWharton/ActionBarSherlock/問題/ 562 –

0

這就是方法,因爲這隻能用於XML 佈局 ,那裏有一個菜單。對於菜單,您應該覆蓋onItemMenuSelected()方法。閱讀the documentation

編輯:

哎呀!顯然這是可能的,但只有蜂窩和以後。

+0

是的,你可能是正確的,但[鏈接](http://developer.android.com/guide/topics/resources/menu-resource.html)文件在這裏提到,y你也可以用XML提供方法。 – DroidEngineer

+0

啊,這對我來說是新鮮的,謝謝!顯然這是真實的,但是「在API級別11中引入」。 – dmon

1

您是否試過使它與onOptionItemSelected()函數配合使用?

API等級1

布爾onOptionsItemSelected(菜單項項)onOptionsItemSelected

新增

只要選擇了在選項菜單中的項目這個鉤子被調用。默認實現簡單地返回false以進行正常處理(調用項目的Runnable或者根據需要向其處理程序發送消息)。您可以將此方法用於您想要在沒有其他設施的情況下進行處理的任何物品。

編輯:

我也發現了這對Handling click events

處理click事件

要執行當用戶選擇一個菜單項的動作,你必須實現PopupMenu.OnMenuItemClickListener接口並通過調用setOnMenuItemclickLi將其註冊到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你應該能夠接收來自onLogOut一個呼叫onMenuItemClick。

相關問題