koufa koufa - 9 months ago 71
Android Question

Android Navigation Drawer implemented with Activities

I am developing my own Android Application and i came to a point where i have three different Activities say Activity A, Activity B and Activity C. What i want to do now is to create a Navigation Drawer to navigate between them. I read the tutorial on the Android Developers website but they only focused on Fragments. How are professional Android Applications developed only with one Activity and all the other screens are developed with the use of Fragments?If not why isn't documented how to implement correct the navigation drawer with Activities instead?Thank you for your help.

Answer Source

You need to create a Base activity which does all the common Drawer navigation stuff . I will call this base Activity as DrawerActivity , and all other Activity should extend this DrawerActivity . So all the Activity will have one instance of Drawer Layout.

Create a common Layout with DrawerLayout and place a FrameLayout and ListView as child


Now set this Layout in onCreate() on DrawerActivity

protected void onCreate(Bundle savedInstanceState) {
   // do other stuff to initialize drawer layout, add list items
  // add a listener to the drawer list view 
 mLeftDrawerList.setOnItemClickListener(new DrawerItemClickListener());


Add a item click listener

  private class DrawerItemClickListener implements ListView.OnItemClickListener {
    public void onItemClick(AdapterView<?> adapterView, View view, int position, long id) {
        switch (position) {
            case 0: {
                Intent intent = new Intent(DrawerActivity.this, YourActivity.class);

Finally, All the other activity will extend this DrawerActivity

 public class MainActivity extends DrawerActivity {

protected void onCreate(Bundle savedInstanceState) {
   // don’t set any content view here, since its already set in DrawerActivity
   FrameLayout frameLayout = (FrameLayout)findViewById(R.id.activity_frame);
    // inflate the custom activity layout
    LayoutInflater layoutInflater = (LayoutInflater)getSystemService(Context.LAYOUT_INFLATER_SERVICE);
    View activityView = layoutInflater.inflate(R.layout.activity_main, null,false);
    // add the custom layout of this activity to frame layout.
    // now you can do all your other stuffs

You can see the complete source here https://gist.github.com/libinbensin/613dea436302d3015563