Android导航抽屉实施活动

我正在开发自己的Android应用程序,我来到了一个点,我有三个不同的活动说活动A,活动B和活动C.现在我想要做的是创build一个导航抽屉来导航它们之间。 我阅读了Android开发者网站上的教程,但他们只关注片段。 专业Android应用程序是如何开发的,只有一个Activity,其他所有的屏幕都是使用Fragments开发的?如果不是,为什么没有文档说明如何使用Activities来实现正确的导航抽屉?感谢您的帮助。

Solutions Collecting From Web of "Android导航抽屉实施活动"

你需要创build一个Base activity ,做所有常见的Drawer navigation东西。 我将把这个基础Activity作为DrawerActivity来调用,其他所有Activity都应该扩展这个DrawerActivity 。 所以所有的Activity将有一个Drawer Layout实例。

使用DrawerLayout创build一个公共布局, DrawerLayout FrameLayoutListView作为子项

  <android.support.v4.widget.DrawerLayout> <FrameLayout android:id="@+id/activity_frame”/> <ListView android:id="@+id/left_drawer”/> </android.support.v4.widget.DrawerLayout> 

现在在DrawerActivity onCreate()设置这个布局

  @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()); 

}

添加一个项目点击侦听器

  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); } } 

最后,所有其他活动将扩展此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 } } 

你可以在这里看到完整的源代码https://gist.github.com/libinbensin/613dea436302d3015563

您可以在每个活动中使用一个NavigationDrawer,并填入相同的选项列表。