问题描述
我开发我自己的Android应用程序,我来到一个地步,我有三个不同的活动,说活动A,活动B和活动C.我想现在要做的是创建一个导航抽屉它们之间进行切换。我读了Android开发者网站上的教程,但他们只专注于碎片。如何与使用片段的开发?如果没有,为什么没有记载如何实现正确的导航抽屉与活动呢?谢谢您的帮助,只有一个活动的专业开发Android应用程序以及所有其他屏幕。
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.
推荐答案
您需要创建一个基本活动
这做所有常见的抽屉导航
的东西。我将这个基地活动
为 DrawerActivity
,和所有其他活动
应该扩展 DrawerActivity
。因此,所有的活动
将有抽屉布局
。一个实例
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
.
创建一个共同的布局与 DrawerLayout
并放置一个的FrameLayout
和的ListView
为孩子
Create a common Layout with DrawerLayout
and place a FrameLayout
and ListView
as child
<android.support.v4.widget.DrawerLayout>
<FrameLayout
android:id="@+id/activity_frame"/>
<ListView
android:id="@+id/left_drawer"/>
</android.support.v4.widget.DrawerLayout>
现在的 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);
}
}
最后,所有其他活动将扩展该 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一>
You can see the complete source here https://gist.github.com/libinbensin/613dea436302d3015563
这篇关于安卓导航抽屉与活动实施的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!