2

나는 나의 NavigationView 메뉴에 사용자 정의 항목을 추가하므로 같은 경우설정 데이터

Menu menu = navigationView.getMenu(); 

MenuItem item = menu.add("Item 1"); 

이 어떻게 (객체 같은) 항목에 데이터를 설정할 수 있도록이를 클릭 할 때/내가 선택한 데이터를 열리는 활동에 전달할 수 있습니까?

답변

1

메뉴 항목에 데이터를 설정하거나 추가 할 수 없습니다. add() 방법의 documentation 살펴보면, 사용자가 설정할 수있는 것을 알 수있다 :

의 groupId - INT :이 항목의 일부가되어야 그룹 식별자입니다. 이것은 배치 상태 변경을위한 항목 그룹을 정의하는 데 사용할 수 있습니다. 항목이 그룹에 없어야하는 경우에는 일반적으로 NONE을 사용하십시오.

itemId - int : 고유 항목 ID. 고유 ID가 필요하지 않으면 NONE을 사용하십시오.

주문 - int : 항목의 순서입니다. 주문을 신경 쓰지 않으면 NONE을 사용하십시오. getOrder()를 참조하십시오.

제목 - CharSequence : 항목에 표시 할 텍스트.

따라서 :

당신이 나를 위해 이해가되지 않습니다 onNavigationItemSelected()

@Override 
public boolean onNavigationItemSelected(MenuItem item) { 
    // Handle navigation view item clicks here. 

    int id = item.getItemId(); 

    if (id == R.id.id_of_menu_item_1) { 

     // handle intents and passing data 

    } else if (id == R.id.id_of_menu_item_2) { 

     // handle intents and passing data 

    } 

    DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout); 
    drawer.closeDrawer(GravityCompat.START); 
    return true; 
} 
+1

네,하지만 ** 메뉴 항목 **에 데이터를 설정하면 어떻게 할 수 있습니까? 예를 들어, 항목에'User' 객체를 어떻게 설정할 수 있습니까? 그 항목이 선택되면, 활동으로 보냈습니까? 귀하의 예에서는 항목을 선택했을 때만 데이터를 전달할 수 있습니다. 필요한 것은 항목에 데이터를 첨부 한 다음 선택한 경우 해당 데이터를 가져와 활동에 전달하는 것입니다. – user7556225

+0

해당 ID를 제외한 메뉴 항목에 어떤 종류의 데이터도 설정하지 마십시오. 클릭 만 할 수 있습니다. 발생하면 onNavigationItemSelected() 메소드를 호출합니다. 이제 ID를 읽고 어떤 작업을 처리했는지 확인합니다. 예를 들어, '의도'를 만들고 데이터를 전달하거나 원하는 다른 작업을 수행하십시오. – Marat

+0

많은 메뉴 항목이 동일한 활동을하지만 다른 데이터 (이 경우에는 객체)를 전달해야하는 경우 어떻게해야합니까? – user7556225

0

내에서 특정 작업을 itemId을 설정하고 처리해야합니다. MenuItem 클래스는 메뉴 항목에 대한 속성 만 보유합니다. MenuItem 인스턴스 안에는 다른 객체를 넣을 수 없습니다.

MenuItem class

당신은 단지 Bundle를 생성, 현재 활동에 새로운 활동 또는로드 개체에 필요한 데이터를 얻을 의도를 사용하여 새로운 활동에 전달할 저장소 패턴을 사용하여 넣을 수 있습니다

하여 직렬화 :의 MenuItem 클래스에 대한보세요 또는 그것에 parcelable 개체. 처리 할 때이 작업을 수행 할 수 있습니다. onNavigationItemSelected(MenuItem item)