如何纠正 v4.DrawerLayout 中的 NullPointerException? [复制]

2023-11-24

我正在尝试实现一个导航抽屉,但由于某些原因我得到了这个空指针异常.

我在这上面花了很多时间,但毫无结果。这是我的代码的一部分。我不明白为什么它返回空指针异常。

我需要导入任何库吗?

提前致谢。

package com.motobeans.productions.aloha;

import android.app.FragmentManager;
import android.os.Bundle;
import android.support.v4.widget.DrawerLayout;
import android.support.v7.app.ActionBarActivity;
import android.support.v7.app.ActionBarDrawerToggle;
import android.view.LayoutInflater;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.view.ViewGroup;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import java.util.Locale;
import android.app.Fragment;

import android.support.v7.widget.Toolbar;
import android.widget.ImageView;
import android.widget.ListView;

public class Activity_test extends ActionBarActivity {
private String[] mPlanetTitles;
    private DrawerLayout mDrawerLayout;
    private ListView mDrawerList;
    private ActionBarDrawerToggle mDrawerToggle;
    private CharSequence mTitle;
    private CharSequence mDrawerTitle;

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

        setContentView(R.layout.activity_test);
        Toolbar toolbar = (Toolbar) findViewById(R.id.tool_bar);
        setSupportActionBar(toolbar);

        mPlanetTitles = getResources().getStringArray(R.array.planets_array);
        mDrawerLayout = (DrawerLayout) findViewById(R.id.drawer_layout);
        mDrawerList = (ListView) findViewById(R.id.left_drawer);

        mTitle = mDrawerTitle = getTitle();

        // Set the adapter for the list view
        mDrawerList.setAdapter(new ArrayAdapter<String>(this,
                R.layout.drawer_list_item, mPlanetTitles));
        // Set the list's click listener
        mDrawerList.setOnItemClickListener(new DrawerItemClickListener());


        mDrawerToggle = new ActionBarDrawerToggle(this, mDrawerLayout, toolbar,
                 R.string.drawer_open, R.string.drawer_close) {

            /** Called when a drawer has settled in a completely closed state. */
            public void onDrawerClosed(View view) {
                super.onDrawerClosed(view);
                getActionBar().setTitle(mTitle);
                invalidateOptionsMenu(); // creates call to onPrepareOptionsMenu()
            }

            /** Called when a drawer has settled in a completely open state. */
            public void onDrawerOpened(View drawerView) {
                super.onDrawerOpened(drawerView);
                getActionBar().setTitle(mDrawerTitle);
                invalidateOptionsMenu(); // creates call to onPrepareOptionsMenu()
            }
        };

        // Set the drawer toggle as the DrawerListener
        mDrawerLayout.setDrawerListener(mDrawerToggle);

    }

    @Override
    public boolean onPrepareOptionsMenu(Menu menu) {
        // If the nav drawer is open, hide action items related to the content view
        boolean drawerOpen = mDrawerLayout.isDrawerOpen(mDrawerList);
        menu.findItem(R.id.action_websearch).setVisible(!drawerOpen);
        return super.onPrepareOptionsMenu(menu);
    }

这是 logcat 输出

Process: com.motobeans.productions.aloha, PID: 1330
    java.lang.RuntimeException: Unable to start activity ComponentInfo{com.motobeans.productions.aloha/com.motobeans.productions.aloha.Activity_test}: java.lang.NullPointerException: Attempt to invoke virtual method 'void android.support.v4.widget.DrawerLayout.setDrawerListener(android.support.v4.widget.DrawerLayout$DrawerListener)' on a null object reference
            at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2325)
            at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2387)
            at android.app.ActivityThread.access$800(ActivityThread.java:151)
            at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1303)
            at android.os.Handler.dispatchMessage(Handler.java:102)
            at android.os.Looper.loop(Looper.java:135)
            at android.app.ActivityThread.main(ActivityThread.java:5254)
            at java.lang.reflect.Method.invoke(Native Method)
            at java.lang.reflect.Method.invoke(Method.java:372)
            at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:903)
            at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:698)
     Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'void android.support.v4.widget.DrawerLayout.setDrawerListener(android.support.v4.widget.DrawerLayout$DrawerListener)' on a null object reference
            at com.motobeans.productions.aloha.Activity_test.onCreate(Activity_test.java:74)
            at android.app.Activity.performCreate(Activity.java:5990)
            at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1106)
            at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2278)
            at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2387)
            at android.app.ActivityThread.access$800(ActivityThread.java:151)
            at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1303)
            at android.os.Handler.dispatchMessage(Handler.java:102)
            at android.os.Looper.loop(Looper.java:135)
            at android.app.ActivityThread.main(ActivityThread.java:5254)
            at java.lang.reflect.Method.invoke(Native Method)
            at java.lang.reflect.Method.invoke(Method.java:372)
            at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:903)
            at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:698)

这好像是mDrawerLayout调用时为空.setDrawerListener().

确保您在导航抽屉中使用相同的 IDfindViewById(R.id.drawer_layout)并在布局文件中。

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

如何纠正 v4.DrawerLayout 中的 NullPointerException? [复制] 的相关文章

  • BottomNavigationView - 如何获取选定的菜单项?

    我使用BottomNavigationView来切换片段 如何获取当前选定的菜单项 以防止重新打开片段 BottomNavigationView bottomNavigationView BottomNavigationView findV
  • 导航组件重复 NavArgs 的问题

    我有一个片段 class SomeFragment private val args by navArgs
  • 为什么将函数参数声明为最终的?

    我目前正在阅读 Sams 出版的 24 小时自学 Android 应用程序开发 一书 我对 Java Android 或其他方面还比较陌生 我对 ActionScript 3 有非常扎实的背景 它与 Java 有足够的相似之处 因此该语言本
  • 在自定义对象中创建时粘性服务不会重新启动

    我有一个具有绑定服务的单例对象 我希望它重新启动 当我从启动器启动应用程序时 单例对象将初始化并绑定到这个现有的服务实例 以下是在单例中创建和绑定服务的代码 public class MyState private static MySta
  • 如何从 SQLite 获取记录总数

    我正在尝试从 Sqlite DB 获取行的总数 以下是我想要做的代码片段 我不知道我在这里做错了什么 public static int getTotalCount Context context Cursor c null try c g
  • Phonegap - 如何将.txt文件保存在Android手机的根目录中

    我正在尝试使用phonegap 将 txt 文件保存在Android 手机的根目录中 我已经安装了这些插件 cordova plugin file 和 cordova plugin file transfer 在 config xml 文件
  • 已经使用 AsyncTask doInBackground 但新数据未显示

    我使用 AsyncTask 创建一个聊天室来接收消息 因此它总是检查即将到来的消息并将其显示给客户端 但代码似乎无法按我希望的方式工作 在客户端只显示所有旧数据 新数据不显示 因为当我尝试从服务器发送消息时 新数据没有显示在客户端中 我对这
  • 如何在 sqlite 中将 2 列合并为新列

    我有一个包含 3 列的表 我必须将 2 列中的值按降序排列到一列中 A B C z 1 2 f 5 7 s 9 5 使用此示例 输出会将 B 列和 C 列中的值放入其中 如下所示 A B s 9 f 7 f 5 s 5 z 2 z 1 我当
  • 在我的Android中,当其他应用程序想要录制音频时如何停止录音?

    在我的应用程序中 服务通过 AudioRecord 持续录制音频 当我的应用程序运行时 其他与音频记录相关的应用程序 例如 Google 搜索 无法工作 如何知道何时有其他应用想要录制音频 以便我可以停止录制以释放资源 答案是MediaRe
  • 从 Firebase 数据库填充微调器

    public class MainActivity extends AppCompatActivity DatabaseReference reference Spinner areaSpinner ArrayList
  • 请求位置更新参数

    这就是 requestLocationUpdates 的样子 我使用它的方式 requestLocationUpdates String provider long minTime float minDistance LocationLis
  • ROOM迁移过程中如何处理索引信息

    CODE Entity tableName UserRepo indices Index value id unique true public class GitHubRepo PrimaryKey autoGenerate true p
  • 如何在C(Linux)中的while循环中准确地睡眠?

    在 C 代码 Linux 操作系统 中 我需要在 while 循环内准确地休眠 比如说 10000 微秒 1000 次 我尝试过usleep nanosleep select pselect和其他一些方法 但没有成功 一旦大约 50 次 它
  • 检查 Android 手机上的方向

    如何查看Android手机是横屏还是竖屏 当前配置用于确定要检索的资源 可从资源中获取Configuration object getResources getConfiguration orientation 您可以通过查看其值来检查方向
  • 如何创建像谷歌位置历史记录一样的Android时间轴视图?

    我想设计像谷歌位置历史这样的用户界面 我必须为我正在使用的应用程序复制此 UIRecyclerView 每行都是水平的LinearLayout其中包含右侧的图标 线条和视图 该线是一个FrameLayout具有圆形背景和半透明圆圈Views
  • 在 Android 上按下电源按钮时,如何防止先调用 onDestroy() 再调用 onCreate()

    我正在记录每个 onCreate 和 onDestroy 调用 我发现 一旦我单击 Android 上的电源按钮 以及模拟器上的电源按钮 我的活动中就会拨打电话 gt onDestroy gt onCreate 这会杀死我的游戏 然后立即从
  • 通过 ADB 拔出设备:“找不到服务”

    我必须测试我的应用程序在打瞌睡模式下的行为 根据文档 https developer android com training monitoring device state doze standby html testing doze 我
  • 下载后从谷歌照片库检索图像

    我正在发起从图库中获取照片的意图 当我在图库中使用 Nexus 谷歌照片应用程序时 一切正常 但如果图像不在手机上 在 Google Photos 在线服务上 它会为我下载 选择图像后 我将图像发送到另一个活动进行裁剪 但在下载的情况下 发
  • SharedFlow 和 StateFlow 的主要区别

    两者有什么区别共享流 and 状态流 以及如何使用这些MVI建筑学 使用简单更好吗Flow或者这些作为状态和事件 Flow 是冷的 意味着它仅在收集数据时才发出数据 另外Flow不能保存数据 可以把它看成是水在里面流动的管道 Flow中的数
  • 为什么Android的ImageReader类这么慢?

    我尝试了适用于 Android 3 4 1 的全新 OpenCVJavaCamera2View但它太慢了 仅显示相机视图约 15 fps 当我尝试较旧的JavaCameraView相反 它给了我很好的结果 30fps 这是我相机的极限 我想

随机推荐

  • 如何使用 PHP 中的 cURL 同时打开多个 URL?

    这是我当前的代码 SQL mysql query SELECT url FROM urls or die mysql error Query the urls table while resultSet mysql fetch array
  • 使用 Django 上传多个文件

    如何使用 Django 上传多个文件 经过一番痛苦之后我最终得到了 uploadify http www uploadify com 与 django 一起工作 但问题并不是真正的 django 的问题 而是让它与 Apple Mac 一起
  • 如何在 Angular2 中操作特定路径上的组件

    我有一个简单的TopbarComponent这基本上在我的视图顶部添加了一个引导式导航栏 由于我的 90 的模板应该包含这个指令 我想通过我的app component看起来像这样 import Component selector my
  • Servlet 3.0 异步

    servlet 3 0 异步功能与以下内容有何区别 ld servlet 实现 doGet request response Thread t new Thread new Runnable void run heavy processin
  • 将映射应用于函数的剩余参数

    在 Clojure 中 如果我有一个函数 f defn f r 我有一个 seq args 其中包含我想要调用 f 的参数 我可以轻松使用 apply apply f args 现在 假设我有另一个函数 g 它被设计为采用任意数量的可选命名
  • 使用多个连接字符串

    Info我的解决方案中有多个项目 其中一个是 DAL 另一个是 ASP NET MVC6 项目 由于 MVC6 项目也是启动项目 我需要在其中添加连接字符串 I saw 这个解决方案 但不被接受 也不起作用 My Try 应用程序设置 js
  • 如何从 PDF 中提取表格作为文本

    我有一个 PDF 文件 其中包含表格 文本和一些图像 我想在 PDF 中有表格的地方提取表格 现在正在手动从页面中查找表 从那里我捕获该页面并保存到另一个 PDF 中 import pypdf import PdfReader PdfWri
  • R 中 GARCH 的模拟

    我正在对 GARCH 模型进行模拟 模型本身并不是太相关 我想问你的是关于优化 R 中的模拟 最重要的是 如果你看到任何矢量化的空间 我已经考虑过 但我看不到它 到目前为止我所拥有的是这样的 Let ht cond variance in
  • 获取已安装的 Android 应用程序列表

    您好 我想获取用户设备上所有已安装应用程序的列表 我已经在谷歌上搜索了很长时间 但找不到我想要的内容 但这个链接是最接近的 并且工作正常 除了我是新人不明白如何使用 getPackages 方法 并用它创建一个列表 http www and
  • abbr 标签的标题可以设置样式吗?

    采取以下代码
  • 有没有办法通过 NodeJS 检索文件/文件夹的唯一 ID?

    我面临的问题很简单 我想跟踪文件 文件夹 即使它已被重命名 删除等 NodeJS 是否提供了访问文件中这些信息的方法 我尝试过默认文件系统模块fs stats https nodejs org api fs html fs class fs
  • “ArrayAdapter 要求资源 ID 为 TextView”XML 问题

    尝试设置视图以显示时出现错误ListView对于我想显示的文件 文本文件 我很确定这与 XML 有关 我只想显示来自的信息this file fileop ReadFileAsList Installed packages txt 我的代码
  • jCarousel - 如何通过自动滚动在悬停时暂停?

    JCarousel 最近发生了变化 2011 年 1 月 它曾经有一种方法可以通过自动滚动实现悬停暂停 在新版本中 我无法解决如何让自动滚动在悬停时停止 我希望滚动在鼠标悬停时停止并在鼠标移出时重新开始 有什么建议么 示例代码在这里 htt
  • HTML 无法更改 Div 的高度

    所以我正在开发井字游戏 但由于某种原因我的 div 不会改变它们的高度 html background color black color white text align center cell border 1px solid whit
  • 在 SQL LIKE 子句中使用 SqlParameter 不起作用

    我有以下代码 const string Sql select distinct name from tblCustomers left outer join tblCustomerInfo on tblCustomers Id tblCus
  • Firebase OrderByKey 的 startAt 和 endAt 给出错误的结果

    我有 3 个带有键的对象 如下所示 它们的格式为 YYYYMMDD 我正在尝试获取一个月的数据 但我没有得到所需的输出 当我这样查询时 var ref db child KPXECP6a1pXaM4gEYe0 ref orderByKey
  • Bootstrap 模态框不显示

    我想测试 Bootstrap 的模式元素并创建了一个小测试页面 但什么也没有出现 我想知道为什么 有什么线索吗 我从引导页面获取了源代码 我的测试页面位于http ronhome no ip org bootstrap modal html
  • Woocommerce,根据运输类别隐藏运输方法

    我试图根据运输类别隐藏除一种运输方法之外的所有运输方法 本质上是在选择属于特定类别的产品时强制使用 FedEx 隔夜方法 我从这段代码 并将其修改如下 add filter woocommerce available shipping me
  • 如何更改Flutter Web应用程序的默认Web服务器IP(127.0.0.1)

    更改flutter web App的默认IP 127 0 0 1 我创建了一个 flutter Web 应用程序 当我运行该 Web 应用程序时 分配的 IP 是 127 0 0 1 但我无法通过 LAN 使用本地 IP 访问同一应用程序
  • 如何纠正 v4.DrawerLayout 中的 NullPointerException? [复制]

    这个问题在这里已经有答案了 我正在尝试实现一个导航抽屉 但由于某些原因我得到了这个空指针异常 我在这上面花了很多时间 但毫无结果 这是我的代码的一部分 我不明白为什么它返回空指针异常 我需要导入任何库吗 提前致谢 package com m