1

所以我的小应用程序可以在谷歌“Play”上找到,到目前为止已经下载了一些。现在开发者控制台报告了崩溃。

这个崩溃报告很奇怪。

首先,开发者控制台给了我一个堆栈跟踪和崩溃的原因,一个空指针异常。但是没有关于 Android 版本或硬件的信息,所以我无法创建模拟器设置来重新创建错误。

这是违规行:

((TextView) findViewById(R.id.speechbubble)).setText(getResources().getString(R.string.welcome_nomusic));

在我测试过的所有设备和模拟器上,这都有效,并产生了一个很好的语音气泡消息

为什么它不工作?我知道布局包含一个名为“speechbubble”的视图,并且字符串资源包含“welcome_nomusic”的文本消息。

那么,知道这里发生了什么以及如何解决它吗?


已修复,谢谢解答。我的错误是为不同的屏幕分辨率添加了额外的布局,并且在我上次更改代码后没有测试所有这些布局。:-/

4

2 回答 2

0

只需记录涉及的每个对象:

log("R: " + R);
log("R.id: " + R.id);
log("R.id.speechbubble: " + R.id.speechbubble);
log("textView: " + findViewById(R.id.speechbubble));
log("getResources(): " + getResources());
log("R.string: " + R.string);
log("R.string.welcome_nomusic: " + R.string.welcome_nomusic);
log("text: " + getResources().getString(R.string.welcome_nomusic));

在此块中的某处,您将有一个空值。

于 2012-04-25T09:25:19.933 回答
0

可能发生的情况是您尝试调用的资源可能不存在于某个设备上,或者它正在努力寻找它。

检查所有布局/字符串/资源在不同大小等方面是否相同。ADT 17 + 中的新 Lint 工具应该会有所帮助

于 2012-04-25T09:28:44.793 回答