2011-11-17 2 views
0

Android 프로젝트에서 옵션 메뉴를 만들 때 문제가 있습니다.Android MenuItem.getItemId가 정수 값을 반환합니다.

내 앱을 디버그/실행하고 메뉴 버튼을 클릭하면 R.id.btnInfo 속성이 메뉴 항목 id (btnInfo)가 아닌 정수를 반환합니다.

메뉴 선언 :

<?xml version="1.0" encoding="utf-8"?> 
<menu xmlns:android="http://schemas.android.com/apk/res/android"> 
<item android:id="@+id/btnInfo" 
     android:title="@string/btnInfo" 
     android:icon="@drawable/ic_info" /> 
</menu> 

로드 메뉴 :

/** 
* Options Menu Inflater Event 
*/ 
@Override 
public boolean onCreateOptionsMenu(Menu menu) { 
    MenuInflater inflater = getMenuInflater(); 
    inflater.inflate(R.menu.options, menu); 
    return true; 
} 

클릭 이벤트 :

/** 
* Click on Options Menu Button 
*/ 
@Override 
public boolean onOptionsItemSelected(MenuItem item) { 
    switch (item.getItemId()) { 
    case R.id.btnInfo: 
    // To-do: 
    return true; 
    default: 
    return super.onOptionsItemSelected(item); 
    } 
} 

답변

2

이 올바른 동작입니다 여기서

는 코드입니다.

R.java 파일을 확인하십시오. ID를 부여한 각 항목에 대해 참조 할 정수 ID도 생성됩니다.

예 :

public static final class menu { 
    public static final int option1=0x7f0a0000; 
    public static final int option2=0x7f0a0001; 
    public static final int option3=0x7f0a0002; 
} 
+0

그래서 ....이 내 R.java 경우 : 공공 정적 최종 클래스 ID { 공공 정적 최종 INT btnInfo = 0x7f060007; 공공 정적 final int btnSimulate = 0x7f060003; 올바른 코드는 다음과 같습니다 /** * 옵션 메뉴 버튼을 클릭 */ ... 스위치 (item.getItemId()) { 경우 : 0x7f060007 // 할 일 : ... ??? 정말 이상합니다. 나는 약간 혼란 스럽다고 생각한다 xD 나는 어떻게해야 할까? : R.id.btnInfo와 buttom의 이드? Thx !! – unairoldan

+0

올바른 코드가 이미 있습니다. 'case R.id.btnInfo'는 btnInfo가 눌러 진 경우 해당 코드를 실행 함을 의미합니다. 귀하의 코드는 괜찮습니다! – Ricky

+0

생성 된 변수 (R.xxx.xxxx)에서 ID를 추가/제거 할 때 생성 된 숫자가 변경됩니다. 질문에 게시 한 코드가 올바른 경우 – FunkTheMonk

관련 문제