kou*_*ufa 8 android android-fragments android-activity android-navigation
我正在开发自己的Android应用程序,我发现我有三个不同的活动,比如活动A,活动B和活动C.我现在要做的是创建一个导航抽屉以在它们之间导航.我在Android开发者网站上阅读了该教程,但他们只关注片段.专业的Android应用程序如何仅使用一个Activity开发,所有其他屏幕都是使用Fragments开发的?如果没有记录,为什么没有记录如何使用Activities实现正确的导航抽屉呢?感谢您的帮助.
Lib*_*bin 16
你需要创建一个Base activity可以完成所有常见工作的Drawer navigation东西.我将这个基地Activity称为DrawerActivity,所有其他人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>
Run Code Online (Sandbox Code Playgroud)
现在将此布局设置为onCreate()onDrawerActivity
@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());
Run Code Online (Sandbox Code Playgroud)
}
添加项目单击侦听器
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);
}
}
Run Code Online (Sandbox Code Playgroud)
最后,所有其他活动将扩展这一点 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
}
}
Run Code Online (Sandbox Code Playgroud)
你可以在这里看到完整的来源https://gist.github.com/libinbensin/613dea436302d3015563
| 归档时间: |
|
| 查看次数: |
8627 次 |
| 最近记录: |