带有片段或活动的 Android Studio 导航抽屉

2023-11-22

我正在尝试使用 Android Studio 的导航抽屉模板开发一个应用程序。因此,我使用此模板创建了一个新项目。但是当我运行程序并单击菜单项时,视图不会改变。我在互联网上到处搜索,但我不知道如何处理这个问题。

这是Android Studio提供的代码:

 public boolean onNavigationItemSelected(MenuItem item) {
    // Handle navigation view item clicks here.

    int id = item.getItemId();

    if (id == R.id.nav_camara) {


    } else if (id == R.id.nav_gallery) {

    } else if (id == R.id.nav_slideshow) {

    } else if (id == R.id.nav_manage) {

    } else if (id == R.id.nav_share) {

    } else if (id == R.id.nav_send) {

    }

    DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout);
    drawer.closeDrawer(GravityCompat.START);
    return true;
}

我想要实现的是将当前视图替换为单击的菜单项的适当视图。

Fragment 是执行此操作的最佳方法还是我应该为每个菜单项创建不同的活动?


在您的情况下,添加片段将是最好的解决方案。

创建一个片段 BlankFragment.java

public class BlankFragment extends Fragment {

    public BlankFragment() {
        // Required empty public constructor
    }

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

    }

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) {
        // Inflate the layout for this fragment
        return inflater.inflate(R.layout.fragment_blank, container, false);
    }

}

并创建fragment_black.xml

    <FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context="com.above_inc.shyam.drawer.BlankFragment">

    <!-- TODO: Update blank fragment layout -->
    <TextView
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:text="@string/hello_blank_fragment" />

</FrameLayout>

现在替换你的方法

public boolean onNavigationItemSelected(MenuItem item) {
    // Handle navigation view item clicks here.
    int id = item.getItemId();

    Fragment fragment = null;
    if (id == R.id.nav_camera) {
        // Handle the camera action
        fragment = new BlankFragment();
    } else if (id == R.id.nav_gallery) {

    } else if (id == R.id.nav_slideshow) {

    } else if (id == R.id.nav_manage) {

    } else if (id == R.id.nav_share) {

    } else if (id == R.id.nav_send) {

    }

    if (fragment != null) {
        FragmentManager fragmentManager = getSupportFragmentManager();
        fragmentManager.beginTransaction()
                .replace(R.id.frame_container, fragment).commit();

    }
    DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout);
    drawer.closeDrawer(GravityCompat.START);
    return true;

}

在您的 content_main.xml 中添加以下代码

 <?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    app:layout_behavior="@string/appbar_scrolling_view_behavior"
    tools:context="com.above_inc.shyam.drawer.MainActivity"
    tools:showIn="@layout/app_bar_main">


    <FrameLayout
        android:id="@+id/frame_container"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        />
</RelativeLayout>

您还可以向其他选项添加更多片段,与上面代码中的相机相同

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

带有片段或活动的 Android Studio 导航抽屉 的相关文章

  • 如何通过代码检测Android上的表情符号支持

    通过代码 我可以制作一个按钮 将这 3 个表情符号插入到文本中 不过 在许多手机上 当用户单击按钮时 问题是 显示为 X X X 或者更糟糕的是 它只显示三个空白空间 我想在无法正确显示表情符号的 Android 设备上禁用并隐藏我自己的内
  • Kotlin Android Firebase 数据库哈希映射转换为类

    我正在尝试从 firebase 数据库获取数据 断点显示它正在获取数据 但看起来我没有正确地将其分配给我的班级 这会导致此异常 java lang ClassCastException 无法将 java util HashMap 转换为 班
  • 服务如何在后台运行 - Android

    今天的采访中我被问到了这个问题 什么是服务 我对此的回答是 Service 是 Android 的基本组件 它没有 UI 并且在后台运行 Service 是否在主线程上运行 不 那么它是如何在后台运行的呢 我心里一片空白 有人可以解释一下如
  • 配置项目 ':react-native-gesture-handler' 时出现问题

    大家好 我已经尝试了很长时间来解决这个问题 但不幸的是我还没有弄清楚如何解决 希望你们能帮助我 所以我有一个反应本机项目和我的朋友 以及我的一位朋友添加 React native gesture handler 包供我们使用 他对这个包没有
  • Phonegap(应用程序错误...发生网络错误)

    我已经使用phonegap 创建了一个版本 在index html 文件中 我编写了一个简单的iframe 用于加载网站 当我从phonegap获取本地url时它就起作用了 但如果我将整个构建作为 zip 文件上传到 PhoneGap 中
  • 如何以编程方式判断蓝牙设备是否已连接?

    我了解如何获取已配对设备的列表 但如何判断它们是否已连接 这一定是可能的 因为我看到它们列在我手机的蓝牙设备列表中 并且它说明了它们的连接状态 将蓝牙权限添加到您的AndroidManifest中
  • AIRPLANE_MODE 的广播接收器无法与 SDK 26 一起使用

    通常 我使用简单的代码来放置Toast当用户改变AIRPLANE MODE 并且它可以使用targetSdkVersion 25 我的 AirPlaneModeReceiver public class AirPlaneModeReceiv
  • ndk-build error.opencv2/core/core.hpp:没有这样的文件或目录

    我在 Android 中使用 OpenCV Nonfree 模块时遇到问题 我读了这个教程https sites google com site wghsite technical notes sift surf opencv androi
  • android:ScrollView(或视差)内的RecyclerView

    我有一个片段2 次卡片浏览内有多个控件 below我有第二个卡片视图回收者视图 这有效perfect 问题是 recyclerview 启动了屏幕的最底部 并且滚动recyclerview非常small 以前使用过列表视图 这使我可以适应您
  • 在 Android 市场中以编程方式检查我的应用程序版本

    目前 我正在启动时检查应用程序版本代码 并将其与我的服务器上的最新版本代码进行匹配 并根据此匹配 我发送用户从 Android 市场获取最新更新 它运行良好 但我的问题是我必须手动更改服务器上的最新版本代码 并且我不知道新版本何时发布APK
  • 不使用eclipse安装Android模拟器

    如何在没有eclipse的电脑上安装android模拟器 android模拟器无需安装eclipse 只需下载 android sdk 并安装即可 安装android SDK之前必须先安装JDK 完成后安装成功 您将获得两个应用程序 SDK
  • Android 中图像字节表示的每像素字节数

    我目前正在编写一个Android应用程序 需要在其中使用OCR 为了实现这一点 我将 Tesseract 与tesseract android tools 项目 http code google com p tesseract androi
  • 使用 RoboSpice 有没有办法从异常中获取 HTTP 错误代码?

    我正在编写一个使用 RoboSpice 的应用程序 在请求侦听器 onRequestFailure SpiceException arg0 中 有没有办法确定该错误是由于发生 401 HTTP 错误而导致的 我有一个后端服务 当令牌过期时
  • 何时调用 glMatrixMode()

    我所关注的大多数 Android OpenGL ES 教程都有其 onSurfaceChanged 函数 如下所示 public void onSurfaceChanged GL10 gl int width int height gl g
  • Android 两个 Activity 之间的共享元素转换不起作用

    在我的应用程序中 我尝试使用新引入的活动之间共享的元素 如果共享元素具有固定位置 例如 android layout gravity top 但是当视图被锚定时问题就出现了 我的第一个活动如下所示
  • Android - 检测视图上的双击和三次点击

    我一直在尝试构建一个可以检测双敲击和三敲击的敲击检测器 在我的努力失败后 我在网上搜索了很长时间以找到可以使用的东西 但没有运气 奇怪的是 像这样的图书馆如此稀缺 有什么帮助吗 你可以尝试这样的事情 尽管我通常建议不要使用三次点击作为一种模
  • 片段中的 SavedInstanceState 始终为 null

    我使用 XML 以及活动中的 setContentView 将片段附加到活动 A 有一个问题 因为我的片段中有非常动态的视图 所以当方向改变时 我必须恢复所有的观点状态 我有问题 因为我正在使用类似的东西 public void onSav
  • 将主题应用到 v7 支持操作栏

    我正在使用support v7库来实现ActionBar在我的应用程序中 我的styles xml file
  • Android Webview隐私浏览

    我在我的 Android 应用程序中使用 webview 从多个站点获取一些网页 我对 webview 行为有一些疑问 webview 是否存储历史记录 cookie 表单自动填充信息 如果是的话 我们可以阻止它这样做吗 如果 Webvie
  • FCM(Firebase Cloud Messaging)如何发送到所有手机?

    我创建了一个小型应用程序 能够从 FCM 控制台接收推送通知 我现在想做的是向所有使用 API 安装应用程序的 Android 手机发送推送通知 这就是我完全迷失的地方 有没有办法在不收集所有注册ID的情况下将其发送到所有手机 这是否仅适用

随机推荐

  • Akka cluster-sharding:入口 Actor 可以拥有动态道具吗

    Akka Cluster Sharding 看起来与我必须跨 Akka 节点创建有状态持久 Actor 的单个实例的用例非常匹配 我不清楚是否有可能有一个需要参数来构造它的 Entry actor 类型 或者也许我需要重新考虑 Entry
  • Facebook Android SDK v4.0.0 ShareDialog NullPointerException 问题

    按照这些说明https developers facebook com docs sharing android我已经实现了 Facebook ShareDialog 以出现在我的应用程序中 但它导致了以下错误 03 27 16 12 53
  • 如何在 Swift 中禁用 TextField 中的粘贴?

    我有一个TextField with a numberPad并且该函数仅在包含数字时运行 如果用户将字母粘贴到TextField并单击 确定 如何禁用粘贴TextField 我同意莱昂纳多 萨维奥 达布斯 如果我是你 我会使用字符串检查并发
  • C++ 有标准的编译时类型容器吗?

    这个问题有一个答案Nim其中提到升压 mpl 映射 标准 C 中是否有可以保存类型的编译时容器 一个用法示例是 compiler vector foo char short long long long template
  • 为什么从 float 转换为 double 会改变值?

    我一直试图找出原因 但找不到 有谁能够帮助我 看下面的例子 float f 125 32f System out println value of f f double d double 125 32f System out println
  • wkhtmltopdf google 地图输出的 JavaScript 延迟

    我正在与 WKTHMTOPDF 合作并且非常享受它 然而 正在转换的页面有谷歌地图 生成的 PDF 中的地图显示为半加载状态 我知道有一个选项可以添加 javascript delay在以前的版本中 但它似乎已被弃用 我使用的是0 99版本
  • 哪些音频格式(扩展)可以通过 just_audio Flutter 包在 ios 和 Android 上使用?

    哪些音频格式 扩展 可以通过 just audio Flutter 包在 ios 和 Android 上使用 想知道我应该允许用户使用 file picker 上传哪些扩展 以便他们可以使用 just audio 包 我在任何地方都找不到列
  • ASP.NET MVC 中动态更改主模板

    我需要在我的应用程序 ASP NET MVC 上支持不同的母版页 推荐的方法是什么 将母版页名称传递给视图 存储母版页 在会话中或其他内容中 以便在用户访问期间保留它 使用自定义基本控制器并继承它 Public Class CustomBa
  • jquery - 如何确定 div 是否更改其高度或任何 css 属性?

    当 div 更改其高度或任何 css 属性时 如何触发事件 我有一个 id 的 divmainContent 我希望jquery在改变高度时自动触发一个事件 我做了这样的事情 mainContent change height functi
  • 如何强制 Composer 使用 https:// 而不是 git://?

    我有这样的东西 repositories type package package name myrepo version dev master source url https github com me myrepo git type
  • 将 UITextView / UITextField 中的空格编码为 URL 格式

    我正在尝试将 UITextView 或 UITextField 的内容作为参数发送到 php 文件 NSString urlstr NSString alloc initWithFormat http server com file php
  • Javascript中如何检查字符是否为字母?

    我正在使用以下命令提取 Javascript 字符串中的字符 var first str charAt 0 我想检查一下这是否是一封信 奇怪的是 Javascript 中似乎不存在这样的功能 至少我找不到 我该如何测试这个 我不相信有一个内
  • DialogFragment 参数和空指针异常

    我的类应该向 DialogFragment 传递一个参数 但我的应用程序在 对话框类的 onCreate 方法中因 NullPointerException 而崩溃 对话框片段类部分代码 public class ConfirmDialog
  • 为什么使用匿名类型而不是创建类[重复]

    这个问题在这里已经有答案了 我正在重构一个旧的应用程序 它使用动态内联 SQL 从大型 Oracle 数据库中提取数据 我创建了一个运行良好的存储过程 PL SQL 由于它只有一行 数据行 我让它返回一个数据行 该类驻留在 DAL 中 当我
  • Edge 浏览器中的 focus()

    我在用popup focus 单击按钮后聚焦弹出窗口 这focus 除 EDGE 浏览器外 所有浏览器都可以正常工作 我面临的问题是间歇性的 有时我可以在浏览器上查看弹出窗口 子弹出对话框 有时可以在浏览器后面 即桌面上 查看 并且我可以通
  • 如何使用闹钟类设置闹钟

    您好 我正在尝试使用 AlarmClock 类在我的应用程序中设置闹钟 我使用的代码如下 Intent intent new Intent intent setAction AlarmClock ACTION SET ALARM start
  • 创建新的 Microsoft.CodeAnalysis.CustomWorkspace - 出现 ReflectionTypeLoadException

    我尝试在 NET 编译器平台 Roslyn 示例中创建类似 ConsoleClassifier 的内容 Microsoft CodeAnalysis v0 7 此时我得到了ReflectionTypeLoadException Custom
  • 从 URL 加载时应如何处理视网膜/普通图像?

    我了解如何以编程方式从 URL 为我的应用程序加载图像 而不是将它们打包在应用程序中 但如何处理 1x 与 2x 问题 如果需要 我可以从外部源提供这两个版本 但是在设置 UIImage 时如何处理 我很确定您无法以自动方式远程加载 2x
  • 使用 Node.js 作为简单的 Web 服务器

    我想运行一个非常简单的 HTTP 服务器 每个 GET 请求example com应得index html提供给它 但作为常规 HTML 页面 即 与阅读普通网页时的体验相同 使用下面的代码 我可以读取内容index html 我如何服务i
  • 带有片段或活动的 Android Studio 导航抽屉

    我正在尝试使用 Android Studio 的导航抽屉模板开发一个应用程序 因此 我使用此模板创建了一个新项目 但是当我运行程序并单击菜单项时 视图不会改变 我在互联网上到处搜索 但我不知道如何处理这个问题 这是Android Studi