gpt4 book ai didi

使用 Activity 实现的 Android Navigation Drawer

转载 作者:塔克拉玛干 更新时间:2023-11-02 09:02:20 26 4
gpt4 key购买 nike

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

最佳答案

您需要创建一个 Base activity 来执行所有常见的 Drawer navigation 操作。我将这个基础 Activity 称为 DrawerActivity ,所有其他 Activity 都应该扩展这个 DrawerActivity 。所以所有的 Activity 都会有一个 Drawer Layout 的实例。

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

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

关于使用 Activity 实现的 Android Navigation Drawer,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23476645/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com