2014-01-11 10 views
3

내 안드로이드 애플 리케이션에서 탐색 서랍을 구현했습니다. 하지만 이제 사용자가 탐색 모음의 목록 항목을 클릭 할 때 조각을 사용하여 레이아웃을 변경할 수 있어야합니다. 여기 은 내가 지금까지 가지고 무엇을 :안드로이드 - 탐색 서랍 조각

XML

<android.support.v4.widget.DrawerLayout 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    android:id="@+id/drawer_layout" 
    android:orientation="horizontal" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent"> 

    <FrameLayout 
     android:id="@+id/content_frame" 
     android:layout_width="match_parent" 
     android:background="#000000" 
     android:layout_height="match_parent" >  
    </FrameLayout> 

    <ListView android:id="@+id/left_drawer" 
     android:layout_width="220dp" 
     android:layout_height="match_parent" 
     android:layout_gravity="start" 
     android:choiceMode="singleChoice" 
     android:divider="@android:color/transparent" 
     android:dividerHeight="0dp" 
     android:background="#111"/> 
</android.support.v4.widget.DrawerLayout> 

자바 파일

public class MainActivity extends Activity { 
final String[] data ={"one","two","three"}; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 

    ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, data); 

    final DrawerLayout drawer = (DrawerLayout)findViewById(R.id.drawer_layout); 
    final ListView navList = (ListView) findViewById(R.id.left_drawer); 
    navList.setAdapter(adapter); 
    navList.setOnItemClickListener(new AdapterView.OnItemClickListener(){ 
     @Override 
     public void onItemClick(AdapterView<?> parent, View view, final int pos,long id){ 
      drawer.setDrawerListener(new DrawerLayout.SimpleDrawerListener(){ 
       @Override 
       public void onDrawerClosed(View drawerView){ 
        super.onDrawerClosed(drawerView); 

       } 
      }); 
      drawer.closeDrawer(navList); 
     } 
    }); 
    } 
} 

위의 코드를 사용하여, 나는 내 응용 프로그램에서 탐색 서랍을 구현하고 나는 참조 탐색 서랍에 "1", "2"및 "3"목록 항목이 있지만 서랍을 닫을 때를 클릭하면 아무 것도 나타나지 않습니다. 그럼, 내 질문은 : 위의 코드에 조각 기능을 어떻게 추가합니까?

초보자입니다. 미리 감사드립니다! 클릭에

+0

이 작업은 FragmentActivity에서 수행해야합니다. – Kishan

+0

@kishandhamat 왜 그런가요?. – Raghunandan

+0

이것은 http://www.gadgetsaint.com/android/android-navigation-drawer-toolbar/#에 도움이 될 수 있습니다.WOBABBJ97fY – ASP

답변

7

selectItem(pos); 

그런

public void selectItem(int position) 
{ 
    switch(position) 
    { 
      case 0: 
        // fragment1 
        // use fragment transaction and add the fragment to the container 
        FragmentManager fragmentManager = getFragmentManager() 
        FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction(); 
        Fragment1 fragment = new Fragment1(); 
        fragmentTransaction.add(R.id.content_frame, fragment); 
        fragmentTransaction.commit(); 

      break; 
      case 1: 
        // fragment2 
      break; 
      case 2: 
        // fragment2 
      break; 
    } 
} 
+0

"// fragment"대신 코드를 알려주시겠습니까? –

+0

@ChinmayDabke 제 편집을 봅니다. – Raghunandan

+0

"selectItem (pos);을 입력해야합니까? "drawer.closeDrawer (navList);"다음에? –

2

사용이 :

public class MenuFragmentActivity extends FragmentActivity{ 
@Override 
    protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.base_layout); 
    addFragments(new Sample(), false, false, 
      AndyConstants.CONTENT_PAGE); 
    } 

    public void addFragments(Fragment fragment, boolean animate, 
     boolean addToBackStack, String tag) { 

    FragmentManager manager = getSupportFragmentManager(); 
    FragmentTransaction ft = manager.beginTransaction(); 
    if (animate) { 
     ft.setCustomAnimations(R.anim.fragment_from_right, 
     R.anim.fragment_from_left, R.anim.fragment_from_right, 
     R.anim.fragment_from_left); 
    } 
    if (addToBackStack) { 
     ft.addToBackStack(tag); 
    } 
    ft.replace(R.id.content_frame, fragment); 
    ft.commit(); 
} 

} 조각에 대한

:

0 여기에 3

먼저 단계됩니다 Navigation Drawer ActivityFile->New->Activity->Navigation Drawer Activity에 의해 생성 후

public class Sample extends Fragment { 
@Override 
public void onCreate(Bundle savedInstanceState) { 
    // TODO Auto-generated method stub 
    super.onCreate(savedInstanceState); 
} 
    @Override 
    public View onCreateView(LayoutInflater inflater, ViewGroup container, 
    Bundle savedInstanceState) { 
     // TODO Auto-generated method stub 
      View view = inflater.inflate(R.layout.page, container, false); 
     return view; 
    } 
    } 
+0

'FragmentActivity'를 확장 할 필요가 없습니다. 11 이하의 탐색 바를 지원하는 경우 AppCompat를 사용해야합니다. 'ActionBarActivity'를 확장해야합니다. – Raghunandan

+0

질문 당 FragmentActivity로 쉽게 할 수 있습니다. – Kishan

+0

그것의 탐색 서랍. – Raghunandan

1

, 다음

에 의해

<include layout="@layout/content_main"/>

을 대체 app_bar_main.xml로 이동 조각

public class CameraFragment extends Fragment{ 

    public static CameraFragment newInstance() { 
     Bundle args = new Bundle(); 
     CameraFragment fragment = new CameraFragment(); 
     fragment.setArguments(args); 
     return fragment; 
    } 

    public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, 
      @Nullable Bundle savedInstanceState) { 
     View rootView = inflater.inflate(R.layout.fragment_camera, null, false); 
     return rootView; 
    } 
} 

Demo project

,615,321을>onNavigationItemSelected 다음 마지막으로

public boolean onNavigationItemSelected(@NonNull MenuItem item) { 
    int id = item.getItemId(); 
    Fragment fragment = null; 
    if (id == R.id.nav_camera) { 
     fragment = CameraFragment.newInstance(); 
    } else if (id == R.id.nav_gallery) { 
     fragment = GalleryFragment.newInstance(); 
    } else if (id == R.id.nav_slideshow) { 
     fragment = SlideShowFragment.newInstance(); 
    } 

    FragmentManager fragmentManager = getSupportFragmentManager(); 
    fragmentManager.beginTransaction().replace(R.id.frame_content, fragment).commit(); 

    setTitle(item.getTitle()); 

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

처럼 수정 Fragment 클래스 예제를 만들 -

둘째MainActivity로 이동 0