2017-02-22 1 views
0

탐색 서랍에 동적으로 클릭, 나는이내가 문제가 동적으로 탐색 서랍에 항목을 추가하는 데있어

`for(int i = 0; i<lista.size(); i++){ 
      SubMenu menuGroup = menu.addSubMenu(Menu.NONE, i, Menu.NONE, lista.get(i)); 
      for(int j = 0; j<5; j++){ 
       menuGroup.add(item + j); 
      }` 

같은 항목을 추가하는 부분을 해결 한 문제는 여기에 있습니다 :

public boolean onNavigationItemSelected(MenuItem item) { 
    // Handle navigation view item clicks here. 
    int id = item.getItemId(); 

    if (id == R.id.nav_manage) { 
     // Handle the camera action 
     //here comes the action for the first item 

    } else if (id == R.id.item_2) { 
     //here comes the action for item 2 and so on 

그래서 것은 내가 (이미 생성 된 항목에 대한 작업) 항목을 클릭을 추가하는 방법을, 나는 동적으로 항목을 만든 후 (이미 완료)이다. for 루프를 시도했지만 for - else if 조건을 for 루프를 사용할 수 없기 때문에. 아무도 도와 줄 수 있습니까?

답변

0

나는

  • onNavigationItemSelected
  • 에 MainActivity.java에
  • 호출하는 방법을 방법을 만드는 하나 개의 번들 조각과 레이아웃을 만들기 전에 같은 문제에 직면하고 이러한 방법

    1. 으로 해결했습니다

    content_main.xml, id가 인 FrameLayout을 추가 한 후 frag_layout, 나는 다음과 같이했다 :

    FragDetail.java MainActivity.java

    public FragDetail getFragment(String desc) { 
    
        FragDetail frag = new FragDetail(); 
    
        Bundle bundle = new Bundle(); 
        bundle.putString("drawer_title", desc); 
    
        frag.setArguments(bundle); 
    
        return frag; 
    } 
    

    에서

    public class FragDetail extends Fragment { 
    
    @Nullable 
    @Override 
    public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { 
    
        View view = inflater.inflate(R.layout.frag_detail, container, false); 
    
        Bundle bundle = getArguments(); 
    
        if(bundle != null) { 
    
         TextView mText = (TextView) view.findViewById(R.id.txt_detail); 
         mText.setText(bundle.getString("drawer_title")); 
        } 
    
        return view; 
    }} 
    

    frag_detail.xml

    <?xml version="1.0" encoding="utf-8"?><RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="match_parent" android:layout_height="match_parent"> 
    <TextView 
        android:text="detail clicked" 
        android:layout_width="wrap_content" 
        android:textAppearance="@style/TextAppearance.AppCompat.Headline" 
        android:layout_height="wrap_content" 
        android:layout_centerVertical="true" 
        android:layout_centerHorizontal="true" 
        android:id="@+id/txt_detail" /></RelativeLayout> 
    

    방법 호출 방법을

    public boolean onNavigationItemSelected(MenuItem item) { 
        // Handle navigation view item clicks here. 
    
        String nmClient = (String) item.getTitle(); 
    
        Fragment frag = getFragment(nmClient); 
        FragmentTransaction ft = getSupportFragmentManager().beginTransaction(); 
    
        ft.replace(R.id.frag_layout, frag); 
        ft.commit(); 
    
        DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout); 
        drawer.closeDrawer(GravityCompat.START); 
        return true; 
    } 
    

    내가 실제로 나는 마침내 모든 항목이 같은 일을하기 때문에, 유일한 차이는, 이름이 내가 생각했던대로 열심히하지 않았다, onNavigationItemSelected로했다, 짝이 link

  • +0

    감사에서 해결책을 발견 ,하지만 당신의 예제는 다른 프로젝트에 유용 할 것입니다. – Alan