Android Navigation Drawer implemented with Activities

后端 未结 2 1793
陌清茗
陌清茗 2020-12-03 08:38

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

2条回答
  •  既然无缘
    2020-12-03 09:20

    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

     @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_drawer_layout);
       // 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 {
        @Override
        public void onItemClick(AdapterView adapterView, View view, int position, long id) {
            switch (position) {
                case 0: {
                    Intent intent = new Intent(DrawerActivity.this, YourActivity.class);
                    startActivity(intent);
                    break;
                }
                default:
                    break;
            }
            mDrawerLayout.closeDrawer(mLeftDrawerList);
        }
    }
    

    Finally, All the other activity will extend this DrawerActivity

     public class MainActivity extends DrawerActivity {
    
       @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(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.
        frameLayout.addView(activityView);
        // now you can do all your other stuffs
        }
     }
    

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

提交回复
热议问题