我正在开发自己的Android应用程序,现在有三个不同的活动(Activity A、Activity B和Activity C)。我想要创建一个侧边栏导航抽屉来在它们之间进行导航。我阅读了Android开发者网站上的教程,但他们只关注Fragments。那么,如何使用一个Activity来开发专业的Android应用程序,并使用Fragments开发所有其他屏幕?如果不行,为什么没有记录如何正确实施具有Activities的导航抽屉?谢谢你的帮助。
我正在开发自己的Android应用程序,现在有三个不同的活动(Activity A、Activity B和Activity C)。我想要创建一个侧边栏导航抽屉来在它们之间进行导航。我阅读了Android开发者网站上的教程,但他们只关注Fragments。那么,如何使用一个Activity来开发专业的Android应用程序,并使用Fragments开发所有其他屏幕?如果不行,为什么没有记录如何正确实施具有Activities的导航抽屉?谢谢你的帮助。
DrawerActivity
的Base activity
,它将负责所有通用的Drawer navigation
操作。其他所有Activity
都应该继承自这个DrawerActivity
,这样所有的Activity
都会有一个Drawer Layout
实例。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>
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
}
}
您可以在这里查看完整的源代码。
Activity
布局inflate
并将其作为子项添加到FrameLayout
中。如果您仍然遇到任何问题,请告诉我。 - Libin你可以在每个Activity中都拥有一个NavigationDrawer,其中填充相同的选项列表。