首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >基于设备密度的NullPointerException同时切换图像

基于设备密度的NullPointerException同时切换图像
EN

Stack Overflow用户
提问于 2014-11-11 07:05:13
回答 1查看 83关注 0票数 0

我有一个标志图像,我显示在我的应用程序的飞溅/欢迎屏幕。最近,当我使该应用程序符合xxx-hdpi屏幕大小时,我遇到了一个奇怪的问题:

  1. 我创建了一个更大的标志图像,并将"_large“添加到名称中。我把这个和另一个图像放在drawable文件夹中。
  2. 在活动的onCreate函数中,我检查设备的密度并打开适当的图像:

代码语言:javascript
运行
复制
float MAX_XX_SCALE = 3.0F; //Maximum scale of xx-hdpi screens.
ImageView img = (ImageView) findViewById(R.id.myImg); // ImageView containing the image.
if (getResources().getDisplayMetrics().density > MAX_XX_SCALE) 
    img.setImageDrawable(getResources().getDrawable(R.drawable.logo_large));
else 
    img.setImageDrawable(getResources().getDrawable(R.drawable.logo));`

但是我在执行应用程序时得到了一个NullPointerException

这是我的逻辑猫

代码语言:javascript
运行
复制
11-11 11:53:46.625: E/AndroidRuntime(919):  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1955)
11-11 11:53:46.625: E/AndroidRuntime(919):  at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1980)
11-11 11:53:46.625: E/AndroidRuntime(919):  at android.app.ActivityThread.access$600(ActivityThread.java:122)
11-11 11:53:46.625: E/AndroidRuntime(919):  at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1146)
11-11 11:53:46.625: E/AndroidRuntime(919):  at android.os.Handler.dispatchMessage(Handler.java:99)
11-11 11:53:46.625: E/AndroidRuntime(919):  at android.os.Looper.loop(Looper.java:137)
11-11 11:53:46.625: E/AndroidRuntime(919):  at android.app.ActivityThread.main(ActivityThread.java:4340)
11-11 11:53:46.625: E/AndroidRuntime(919):  at java.lang.reflect.Method.invokeNative(Native Method)
11-11 11:53:46.625: E/AndroidRuntime(919):  at java.lang.reflect.Method.invoke(Method.java:511)
11-11 11:53:46.625: E/AndroidRuntime(919):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:784)
11-11 11:53:46.625: E/AndroidRuntime(919):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:551)
11-11 11:53:46.625: E/AndroidRuntime(919):  at dalvik.system.NativeStart.main(Native Method)
11-11 11:53:46.625: E/AndroidRuntime(919): Caused by: java.lang.NullPointerException
11-11 11:53:46.625: E/AndroidRuntime(919):  at com.project.android.WelcomeActivity.onCreate(WelcomeActivity.java:42)
11-11 11:53:46.625: E/AndroidRuntime(919):  at android.app.Activity.performCreate(Activity.java:4465)
11-11 11:53:46.625: E/AndroidRuntime(919):  at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1049)
11-11 11:53:46.625: E/AndroidRuntime(919):  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1919) 

这就是我在第42行的内容:img.setImageDrawable(getResources().getDrawable(R.drawable.logo));

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-11-11 07:16:07

就像你说的

还有,该死的!我把它放在setContentView()之前

因此,您的ImageView img是空的,因为您在设置内容视图之前正在尝试findViewById,所以请将

代码语言:javascript
运行
复制
ImageView img = (ImageView) findViewById(R.id.myImg); 

因为setContentView是内容视图的一部分,所以在onCreate方法中使用R.id.myImg

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26859406

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档