用活动实现的Android导航抽屉

用活动实现的Android导航抽屉,android,android-fragments,android-activity,android-navigation,Android,Android Fragments,Android Activity,Android Navigation,我正在开发自己的Android应用程序,现在我有三个不同的活动,即活动a、活动B和活动C。我现在想做的是创建一个导航抽屉,在它们之间导航。我在Android开发者网站上读了教程,但他们只关注片段。如何只使用一个活动开发专业Android应用程序,而使用片段开发所有其他屏幕?如果没有,为什么没有记录如何使用活动来实现正确的导航抽屉?感谢您的帮助。您可以在每个活动中使用导航抽屉,使用相同的选项列表填充。您需要创建一个基本活动,它执行所有常见的抽屉导航操作。我将此基本活动称为DrawerActivit

我正在开发自己的Android应用程序,现在我有三个不同的活动,即活动a、活动B和活动C。我现在想做的是创建一个导航抽屉,在它们之间导航。我在Android开发者网站上读了教程,但他们只关注片段。如何只使用一个活动开发专业Android应用程序,而使用片段开发所有其他屏幕?如果没有,为什么没有记录如何使用活动来实现正确的导航抽屉?感谢您的帮助。

您可以在每个活动中使用导航抽屉,使用相同的选项列表填充。

您需要创建一个
基本活动
,它执行所有常见的
抽屉导航
操作。我将此基本
活动
称为
DrawerActivity
,所有其他
活动
应扩展此
DrawerActivity
。因此,所有
活动
都将有一个
抽屉布局的实例

使用
DrawerLayout
创建通用布局,并将
FrameLayout
ListView
作为子级放置

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

添加项目单击侦听器

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

你可以在这里看到完整的源代码

注意,文档中说,如果你有三个以上的顶级视图,你应该只使用导航抽屉。好的,让它更具体一点,Google Play Store是如何在导航抽屉方面开发的?我已经考虑过了,但这是一种常见的做法吗?请提供一个扩展实用性的活动的完整示例。我扩大了我的布局,并将其添加为框架布局的子视图。但它不起作用。我只需要(//将此活动的自定义布局添加到框架布局。),如何正确执行。请参阅我的更新答案。您需要对
活动
布局进行充气并将其作为子项添加到
框架布局
。如果您仍然看到任何问题,请告诉我。。。我编写了完全相同的代码,但我将frameLayout设置为ViewGroup参数,用于扩大布局。也许这就是我的应用程序似乎陷入无限循环的原因。我会试试的,如果行得通的话,那将是一个很大的帮助。非常感谢你的帮助。太棒了!谢谢大家!@Libin如何防止打开当前活动两次?
  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);
    }
}
 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
    }
 }