Android神秘的空指针异常

2024-01-02

自从我上传我的应用程序以来,我收到了许多 java.lang.NullPointerException 崩溃报告。我正在努力理解这个问题,因为它不会在我亲自测试过的模拟器或物理设备上崩溃。以下是其中一份报告的示例:

java.lang.IllegalStateException: Could not execute method of the activity
at android.view.View$1.onClick(View.java:2072)
at android.view.View.performClick(View.java:2408)
at android.view.View$PerformClick.run(View.java:8817)
at android.os.Handler.handleCallback(Handler.java:587)
at android.os.Handler.dispatchMessage(Handler.java:92)
at android.os.Looper.loop(Looper.java:143)
at android.app.ActivityThread.main(ActivityThread.java:4914)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:521)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:858)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)
at dalvik.system.NativeStart.main(Native Method)
Caused by: java.lang.reflect.InvocationTargetException
at com.bryan.barrett.countdownforandroid.practiceSubscreen.openNumbersSelect(Unknown         Source)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:521)
at android.view.View$1.onClick(View.java:2067)
... 11 more
Caused by: java.lang.NullPointerException
... 15 more

我认为当按下“openNumbersSelect”按钮时,这会在“practiceSubscreen”中崩溃。这是我为该按钮编写的代码:

public void openNumbersSelect(View view){
    Intent iNum = new Intent(this, numbersSelect.class);
    String gamemode = "practice";   //practice mode
    iNum.putExtra("gamemode", gamemode);
    startActivity(iNum);

    overridePendingTransition(R.anim.fadein, R.anim.fadeout);
    if(sound){
        soundPool.play(Main.SNDclick, audio.getStreamVolume(AudioManager.STREAM_MUSIC), 
                audio.getStreamVolume(AudioManager.STREAM_MUSIC), 1, 0, 1f);
    }
} 

这是下面的numbersSelect 类中的onCreate 代码,它要打开:

public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_numbers_select);

        Intent i = getIntent();
        gamemode = i.getStringExtra("gamemode");    
        gameround = i.getIntExtra("gameround", 0) + 1;
        points = i.getIntExtra("points", 0);    

        //Shared Preferences
        prefs = PreferenceManager.getDefaultSharedPreferences(this);
        sound = prefs.getBoolean("sound", true);

        //Sounds
        setVolumeControlStream(AudioManager.STREAM_MUSIC);
        audio = (AudioManager) getSystemService(Context.AUDIO_SERVICE);
        soundPool = Main.soundPool;

        //Big Numbers
        for (int n=25; n<=100; n+=25){      //add 25, 50, 75, 100
            bignumbers.add(n);              
        }
        //Small Numbers
        for (int m=1; m<=10; m++){      //adds 1-10 twice
            smallnumbers.add(m); 
            smallnumbers.add(m); 
        }

        //Screen metrics
        DisplayMetrics metrics = new DisplayMetrics();
        getWindowManager().getDefaultDisplay().getMetrics(metrics);
        int screenw = metrics.widthPixels; int screenh = metrics.heightPixels;
        int unitw = (screenw/14); int unith = (screenh/40); //divide screen into 14 columns x 40 rows...

        num1 = (Button)findViewById(R.id.num1img); nums.add(num1); 
        num2 = (Button)findViewById(R.id.num2img); nums.add(num2); 
        num3 = (Button)findViewById(R.id.num3img); nums.add(num3); 
        num4 = (Button)findViewById(R.id.num4img); nums.add(num4); 
        num5 = (Button)findViewById(R.id.num5img); nums.add(num5); 
        num6 = (Button)findViewById(R.id.num6img); nums.add(num6); 
        for(int n=0; n<6; n++){
            nums.get(n).setHeight(screenh/4); nums.get(n).setTextSize(Main.fontSize); 
            nums.get(n).setWidth(screenw/6); nums.get(n).setPadding(1, 1, 1, 1);
        }
        lrg = (Button)findViewById(R.id.largebutton); lrg.setWidth((unitw*200)/35); 
        sml = (Button)findViewById(R.id.smallbutton); sml.setWidth((unitw*200)/35);

        Typeface scribble = Typeface.createFromAsset(getAssets(), "fonts/scribble.ttf");

        TextView numbersSeltext = (TextView)findViewById(R.id.numbersSeltext);
        numbersSeltext.setTypeface(scribble);
        numbersSeltext.setWidth(screenw); numbersSeltext.setHeight(unith*8);
        if(gamemode.equals("full")){
            numbersSeltext.setText("Round " + gameround + ": Select 6 Numbers");
        }
}

如果有人能阐明这一点,我们将不胜感激!这是一个令人沮丧的问题,因为它在我自己测试过的设备上完美运行,并且根据反馈,它似乎在很多设备上运行良好,所以我什至不确定代码是否存在问题,或者某些设备是否存在问题已建成..如果需要,我可以提出更多崩溃报告或代码!

提前致谢!


如果我是你,我会在使用之前测试所有按钮 num1、num2... 和许多其他视图是否为 null,因为如果视图因任何原因尚未创建,那么简单地获取视图可能会引发 nullpointerException(例如,可滚动列表视图项仅填充适合屏幕的视图)。如果您让用户知道您的布局 xml 是什么,可能会有更多帮助。

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

Android神秘的空指针异常 的相关文章

  • 无法获取项目的未知属性“assembleRelease”

    将 Android Studio 更新到版本 2 2 并将 gradle 插件更新到 2 2 0 后 出现以下错误 错误 32 1 评估项目 jobdispatcher 时出现问题 无法获取 org gradle api Project 类
  • Phonegap(应用程序错误...发生网络错误)

    我已经使用phonegap 创建了一个版本 在index html 文件中 我编写了一个简单的iframe 用于加载网站 当我从phonegap获取本地url时它就起作用了 但如果我将整个构建作为 zip 文件上传到 PhoneGap 中
  • 在 Android 中使用 awt

    我有一个绘制图表的 Java Swing 应用程序 它使用 Graphics2D 调用和 awt 对象 例如 Rectangle 等 在某些时候我可能想将其移植到 Android 上 我知道我无法在 Android 上使用 Graphics
  • AIRPLANE_MODE 的广播接收器无法与 SDK 26 一起使用

    通常 我使用简单的代码来放置Toast当用户改变AIRPLANE MODE 并且它可以使用targetSdkVersion 25 我的 AirPlaneModeReceiver public class AirPlaneModeReceiv
  • 升级到 Proguard 4.8 后无法导出应用程序

    我刚刚将我的 Android SDK ADT 和 Proguard 升级到最新最好的版本 我的项目在调试模式下编译并运行良好 但是当我尝试导出它的签名版本 APK 时 我收到来自导出向导的错误Eclipse 控制台上没有任何错误日志消息 如
  • android:ScrollView(或视差)内的RecyclerView

    我有一个片段2 次卡片浏览内有多个控件 below我有第二个卡片视图回收者视图 这有效perfect 问题是 recyclerview 启动了屏幕的最底部 并且滚动recyclerview非常small 以前使用过列表视图 这使我可以适应您
  • 无法接收UsbManager.ACTION_USB_DEVICE_ATTACHED/UsbManager.ACTION_USB_DEVICE_DETACHED的广播Intent

    我最近正在编写一个 USB 主机应用程序 但它被卡住了 因为我无法检测到设备连接 分离事件 我遵循了编码说明http developer android com guide topics connectivity usb host html
  • 如何最大限度地减少 Google API(地点)自动完成的请求量?

    我正在使用 google API 位置来自动完成位置AutoCompleteTextView 我做了几次测试 大概进行了 20 次搜索 在我的 google devs 个人资料中 写着我已经发出了 200 个 API 请求 据我所知 每次我
  • 在活动启动期间优雅地处理屏幕方向变化

    我正在尝试找到一种方法来正确处理设置活动 其中活动的方向是根据启动它的意图中的数据确定的 这是一款用户可以选择关卡的游戏 其中一些是纵向的 一些是横向的 我面临的问题是setRequestedOrientation ActivityInfo
  • MediaPlayer.create() 始终返回 null

    我以前用过媒体播放器 从来没有遇到过这个问题 每当我尝试使用 MediaPlayer create 时 该方法都会给我 null 并且我无法播放声音 我有什么遗漏的吗 public class Game extends Activity p
  • 检测设备方向

    我需要检测 Android 设备方向变化 而无需手动处理传感器数据 同时保持活动方向坚持某个方向 onConfigurationChange不会起作用 因为会让我的活动不旋转 通过使用传感器数据来检测方向变化 我认为这是轮子的发明 因为 A
  • Fresco:滚动 RecyclerView 后图像消失

    我有一个 Horizo ntal RecyclerView 每个项目都有一个使用 Facebook Fresco 图像库加载到其中的图像 然而 虽然正确的图像最初是在屏幕上滚动一点时加载的 但当 RecyclerView 进一步滚动时 它就
  • Android 5 Lollipop 阴影方向或 y 偏移

    是否有可能改变 Y 偏移的阴影方向 现在我有以下布局
  • 使用 twitter API 1.1 在 Android 应用程序中显示 twitter feed

    基本上我想展示这个提要 https en twitter com epl live https en twitter com epl live在我的应用程序中 由于 twitter 更改了其 api 1 1 每个调用都必须经过授权 我发现的
  • 用户通过 firebase 动态链接安装应用程序并在应用程序抽屉上打开应用程序后,如何获得深层链接?

    我正在使用 firebase 动态链接邀请朋友使用我的应用程序 一切都很好 单击邀请链接会将我带到 Playstore 当我安装应用程序并等待其完成时 Playstore 会向我显示 继续 按钮 当我单击此按钮时 应用程序将打开 并且我会收
  • 活动中列表视图中的粘滞行

    我的列表视图中只有一行应该是粘性的 而不是粘性标题中带有字母的部分或部分 我真的很感激任何关于列表视图在活动中粘性一行而不是片段的帮助 我该怎么做 我真的很感谢任何帮助 提前致谢 使用如下代码 class MyAsyncTask exten
  • Android SDK WebView调用Activity

    我试图在单击 WebView 组件内的链接时启动活动 我的Webview已加载到里面Main java我想启动SubActivity java当点击网站内的链接时Main java 另外 如何将参数传递给此活动 Example inspec
  • FCM 主题是否适合更多用户?

    我对使用主题消息有点困惑 我的场景是根据通知触发一些作业 请帮助我更多地了解这一点 如果我们正在处理大量用户 则可以使用 FCM 主题向用户发送通知 我们可以只使用数据消息和主题消息吗 使用主题发送的消息是否保证送达 我在 FCM 文档中看
  • AndroidAnnotations 和 Dagger

    我正在尝试使用 Dagger 注入 Android 带注释的 Activity java lang IllegalArgumentException No inject registered for members com app serv
  • 将主题应用到 v7 支持操作栏

    我正在使用support v7库来实现ActionBar在我的应用程序中 我的styles xml file

随机推荐

  • 哪个 .NET 版本适用于 C# 5 异步功能 [关闭]

    很难说出这里问的是什么 这个问题是含糊的 模糊的 不完整的 过于宽泛的或修辞性的 无法以目前的形式得到合理的回答 如需帮助澄清此问题以便重新打开 访问帮助中心 help reopen questions 用户必须在计算机上安装哪个版本的 N
  • python属性前后带有下划线有什么区别[重复]

    这个问题在这里已经有答案了 我想知道Python中这些有什么区别 self var1 self var1 self var1 self var1 作为起点 您可能会发现这句话很有帮助PEP 8 Python 代码风格指南 http www
  • 在编写 Spring Resource Bundle 时是否有单一规则来处理单引号?

    春天的ResourceBundleMessageSource uses MessageFormat用于替换占位符 0 内部消息 MessageFormat要求单引号 使用两个单引号 see 消息格式 Javadoc http docs or
  • 从文本块中删除停用词

    我正在处理一个文本块 步骤之一是删除停用词 Textblob 是不可变的 因此我将其转换为列表来完成这项工作 blob tb tekst lista word for word in blob words if word not in st
  • 可以同时延长2个课程吗?

    我有这些课程 public class myClassPage System Web UI Page public myClassPage public class myClassControl System Web UI UserCont
  • 碰撞检测和碰撞响应

    我一直在尝试使用 androids Opengl 来表示一些移动 旋转的对象 现在我想让他们碰撞并做出现实的反应 通过研究这个问题 我可以找到许多资源 这些资源建议我如何确定两个 3D 形状是否在当前帧中发生碰撞 或者它们是否会在下一帧中发
  • 有效合并大镶木地板文件

    我正在使用 parquet tools 来合并 parquet 文件 但 parquet tools 似乎需要与合并文件一样大的内存 我们是否有其他方法或 parquet tools 中的可配置选项来更有效地使用内存 因为我在 hadoop
  • 如何在android中的textview中缩进文本?

    我试图通过制作单独的段落来使文本更容易阅读 我尝试在字符串资源中的文本之前添加空格 但它不起作用 我想知道是否可以向文本视图或字符串资源本身添加属性 谢谢罗布 您可以使用 t 表示制表符 n 表示换行符 它肯定有效 并将此属性写入 xml
  • 无法使用 var 和 foreach 将 void 分配给隐式类型局部变量

    我正在尝试列出表单中的所有按钮名称以使用代码列出 var v new List
  • 如何阅读 FSM 图

    我如何获取该图并将其转换为可用的程序 我不太确定如何阅读该图 引导我完成它 也许会展示一个代码示例以及它与图表的关系 里面有文字的圆圈是州 文本描述了状态是什么 虚线箭头指向起始状态 传出箭头确定此状态可以更改的位置 箭头旁边是被线分为上半
  • Lua中如何快速初始化关联表?

    在Lua中 您可以通过以下方式创建表 local t 1 2 3 4 5 但是 我想创建一个关联表 我必须按以下方式进行 local t t foo 1 t bar 2 下面给出了一个错误 local t foo 1 bar 2 有没有办法
  • 在 QML 中解析 JSON [重复]

    这个问题在这里已经有答案了 相关的 Qt 文档应该是this http doc qt io qt 5 json html 但它没有提到 QML 然而 在网上的许多地方 我发现了类似功能的用法JSON parse在 QML JS 中 有这样的
  • 如何将 MediatR 与我的业务层解耦

    早上好 我在项目中使用域事件 我发现实现它的最简单方法是使用 MediatR 但我不希望我的项目直接依赖它 我想应用依赖倒置来隐藏库 由于 INotification 接口 当前代码依赖于 Mediator public class Ema
  • 片段已在 viewpager 中添加了 IllegalStateException

    我正在使用 viewpager 来显示图片 我基本上只需要三个片段 上一个要预览的图像 当前显示的图像和下一个要预览的图像 我想只显示上一张和下一张图像的预览 当用户实际滑动到它时 它将更改为完整图像 所以我想只使用 3 个片段来实现这一点
  • Ellipsoid R 函数 - 查找一个点是否适合 - R 脚本

    我有一个 3D 椭球函数 ellipsoid lt function center c 0 0 0 radius 1 shape diag 3 segments 51 angles lt 0 segments 2 pi segments e
  • 如何从返回根参数和数组的 JSON API 调用创建 Backbone Collection

    Backbone js 菜鸟在这里 我想从我的应用程序外部的 JSON API 创建一个集合 具体来说 api来自堆栈溢出 http api stackoverflow com 1 1 我知道我应该从这样的集合中设置 url 参数 App
  • 错误:连接超时:连接。如果您使用 HTTP 代理,请在 IDE 或 Gradle 中配置代理设置

    我厌倦了这个错误 我不知道如何解决这个错误 它没有设置为自动配置模式 我正在尝试自动配置它 但它需要自动配置 URL 我不知道该 URL 它给我们导入的所有项目带来了同样的错误 请帮助这个错误 我已经尝试了很多天了 如果您不使用任何代理 那
  • CDN如何访问数据库?

    具体来说 我将使用的数据库是 mongodb 有问题的文件是图像 我的问题是 如果您将图片存储在数据库中而不是常规的静态文件结构中 这是如何工作的 我想您可以将 CDN 文件的链接与图片一起存储在数据库中 所以 image cdnurl f
  • 如何动态更改 R 中现有函数的一行

    我偶尔会遇到带有限制性参数的函数 这些社区贡献的函数绝对很棒 否则我希望能够定义一个新函数 动态地改变困扰我的行为 而不必将整个函数重写到脚本文件中 我知道如何在 R 中可视化函数 只需键入函数名称即可 但是如何用修改后的定义保存 修改和定
  • Android神秘的空指针异常

    自从我上传我的应用程序以来 我收到了许多 java lang NullPointerException 崩溃报告 我正在努力理解这个问题 因为它不会在我亲自测试过的模拟器或物理设备上崩溃 以下是其中一份报告的示例 java lang Ill