2016-08-17 3 views
0

기본 안드로이드 NavigationDrawer을 사용하는 앱을 개발 중이며 기본 MenuItem을 사용하여 stringmenuItem.setTitle()을 할당 할 수 있기 때문에 자신의 맞춤형 MenuItem을 만들었지 만 다른 문자열도 추가하고 싶습니다. 당신이이 MenuItem 구현 볼 수 있고 내가 catId라는 문자열과 세터이 캐릭터에 대한 게터를 추가로Android : onNavigationItemSelected의 맞춤 메뉴 항목?

1st screenshot

: 그래서 난이 사용자 정의 CatMenuItem.java를 만들었습니다.

이제 MainActivityonNavigationItemSelected 내가 매개 변수로 대신의 MenuItem의 CatMenuItem를 넣을 때 오류가 Method does not override method from its superclass라고 말하는에서 :

2nd screenshot

내가 모든 노력을하고 많은 기사를 검색 한, 아무것도 작동하지 않습니다, 메뉴를 ListView으로 변경하고 싶지 않다는 것을 명심하십시오, 나는 그대로 메뉴를 원합니다.

내가 원하는 것은 다음과 같습니다. 선택한 MenuItem에서 catId 문자열을 가져옵니다.

도움이 매우 감사합니다.

편집catId 설정 : 를 내가 메뉴로 값을 지정하는 URL (JSON)에서 내용을 가져옵니다 getContents라는 방법을 수행 한 MainActivity에서는 내가 할당 방법 아래 그림에서 볼 수있는 만일 catId에 값 :

enter image description here

답변

0

대신 onNavigationItemSelected()에 대한 매개 변수를 동일하게 유지하려고, 그냥 매개 변수과 같이 캐스트 : 매개 변수가`MenuItem의 item`을하지만,이 경우 작동하지 않을 때 그것은 이미 구현 것

@Override 
public void onNavigationItemSelected(MenuItem menuItem) { 
    CatMenuItem catMenuItem = (CatMenuItem) menuItem; 
} 
+0

나는 그뿐만 아니라 작동을 시도합니다. 이 오류가 발생했습니다. 'android.support.v7.internal.view.menu.MenuItemImpl을 com.my.app.CatMenuItem'으로 캐스팅 할 수 없습니다. –

0

활동 클래스는 우선은 그것을 무시하기 위해 귀하의 MainActivity에서 NavigationView.OnNavigationItemSelectedListener을 구현해야하는 방법 onNavigationItemSelected를 보유하지 않습니다.

+0

, 그것을 잘 작동합니다 매개 변수를 'CatMenuItem item'으로 변경합니다. –

+0

그러면 메소드 서명을 위반하는 메소드 param 유형이 변경됩니다. crymson의 대답을 확인하십시오. – fluffyBatman

+0

'android.support.v7.internal.view.menu.MenuItemImpl을 com.my.app.CatMenuItem'으로 캐스팅 할 수 없습니다. –