为了账号安全,请及时绑定邮箱和手机立即绑定

数组的Drawable路径返回空值

数组的Drawable路径返回空值

人到中年有点甜 2019-03-22 19:15:37
我创建了一个整型值的数组,这些整型值是一个图片对象的路径ID,就像这样int[] picItems = {R.drawable.pic_one, R.drawable.pic_two, R.drawable.pic_three};然后,picItem的数组是空的。我想要能够从一个索引里取到这些值然后用它作为背景,就像这样:relative.setBackgroundResource(picItems[index]);现在,如果我用上边的代码然后设置参数字段为R.drawable.pic_one,这是可以的。但是,当我进行申明然后实例化整形数组picItems,我得到了一个空指针的异常。我必须仔细的检查一下,而且还有一个简单的错误,但是如果有谁能够随意的就指出它来,我会非常感谢的,谢谢。!我已经试了很多种不同的方法来声明和实例化这个数组。尽管在实例化之后这个数组仍然是空的,当想要用的时候还是有一个错误(我为了能够捕获到错误用了一个if语句)下边是一小段代码public class Snow extends Activity{         int[] picItems;         RelativeLayout relative;         SharedPreferences sp;         int checkedItem = 0;         @Override         public void onCreate(Bundle savedInstanceState){         super.onCreate(savedInstanceState);         setContentView(R.layout.main);             picItems = new int[]{R.drawable.pic_one, R.drawable.pic_two, R.drawable.pic_three};             sp = getPreferences(MODE_PRIVATE);             checkedItem = sp.getInt("picture", 0);             if (!(picItems == null) || !(picItems.equals(null))){             Toast.makeText(getApplicationContext(), "Array is null for some reason", Toast.LENGTH_SHORT).show();         }else{              relative.setBackgroundResource(picItems[checkedItem]);         }//end of if             ...} ...}这是Logcat Output:11-20 19:00:27.363: E/AndroidRuntime(18311): java.lang.RuntimeException: Unable to start activity ComponentInfo {com.app.Snow/com.app.snow.Snow}: java.lang.NullPointerException     11-20 19:00:27.363: E/AndroidRuntime(18311):    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1821)     11-20 19:00:27.363: E/AndroidRuntime(18311):    at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1842)     11-20 19:00:27.363: E/AndroidRuntime(18311):    at android.app.ActivityThread.access$1500(ActivityThread.java:132)     11-20 19:00:27.363: E/AndroidRuntime(18311):    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1038)
查看完整描述

3 回答

?
蓝山帝景

TA贡献1843条经验 获得超7个赞

试试这个:

final int[] picItems = {R.drawable.pic_one, R.drawable.pic_two, R.drawable.pic_three};

这样,肯定是要实例化的,而且你可能会改变数组的引用,然后你就不可能通过访问picItems获得NPE,如果你们仍然确实要获得NPE,然后还有一些其他的。


查看完整回答
反对 回复 2019-04-26
  • 3 回答
  • 0 关注
  • 460 浏览

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号