只要要个offer 2019-02-17 14:07 采纳率: 66.7%
浏览 864
已采纳

安卓开发中,我在Spinner的onItemSelected函数里访问全局变量程序就会CrashHandler闪退

小白在做一个android音乐播放器,想设置一个下拉列表来选择歌曲的播放顺序,分随机播放、按时间顺序播放和按热度播放,但是我在使用Spinner的onItemSelected函数时,在里面调用一下全局的歌曲List就会出现CrashHandler然后闪退,而且不用排序只是想打印一下list信息就会闪退,CrashHandler后面的参数不懂是什么东西,希望大佬们指点一下,下面附上代码和报错信息:

public void setSpinner(){
        List<String> list = new ArrayList<String>();
        list.add("随机播放");
        list.add("播放最新");
        list.add("播放最热");
        adapter = new ArrayAdapter<String>(this,android.R.layout.simple_spinner_item, list);
        spinner.setAdapter(adapter);
        spinner.setOnItemSelectedListener(new Spinner.OnItemSelectedListener(){
            public void onItemSelected(AdapterView<?> arg0, final View arg1, final int arg2, long arg3) {
                // TODO Auto-generated method stub
                arg0.setVisibility(View.VISIBLE);
                Log.i("adapter","您选择的是:"+adapter.getItem(arg2));
                                //以按热度排序为例
                Collections.sort(musicList, new Comparator<Music>() {
                    @Override
                    public int compare(Music o1, Music o2){
                        int diff = o1.getFansnum() - o2.getFansnum();
                        if(diff >0) {
                            return 1;
                        }else if(diff < 0){
                            return -1;
                        }
                        return 0;
                    }
                });
                for(int i=0;i<musicList.size();i++){
                    Log.i("smile", "排序成功~"+musicList.get(i).getObjectId()+"lizi:"+musicList.get(i).getName());
                }
            }
            public void onNothingSelected(AdapterView<?> arg0) {
                // TODO Auto-generated method stub
                arg0.setVisibility(View.VISIBLE);
            }
        });
}

其中musicList是一个全局变量,我用传参传进函数也不行,难道是因为我的歌曲正在播放?
报错信息:
D/AndroidRuntime: Shutting down VM
D/CrashHandler: BOARD : unknown
BOOTLOADER : unknown
BRAND : google
CPU_ABI : x86
CPU_ABI2 :
DEVICE : generic_x86
DISPLAY : sdk_google_phone_x86-userdebug 7.0 NYC 4662066 dev-keys
FINGERPRINT : google/sdk_google_phone_x86/generic_x86:7.0/NYC/4662066:userdebug/dev-keys
HARDWARE : ranchu
D/CrashHandler: HOST : abfarm646
ID : NYC
IS_DEBUGGABLE : true
IS_EMULATOR : true
MANUFACTURER : Google
MODEL : Android SDK built for x86
PERMISSIONS_REVIEW_REQUIRED : false
PRODUCT : sdk_google_phone_x86
RADIO : unknown
SERIAL : unknown
SUPPORTED_32_BIT_ABIS : [Ljava.lang.String;@970f945
SUPPORTED_64_BIT_ABIS : [Ljava.lang.String;@16b589a
SUPPORTED_ABIS : [Ljava.lang.String;@cfd5cb
TAG : Build
TAGS : dev-keys
TIME : 1521319005000
TYPE : userdebug
UNKNOWN : unknown
USER : android-build

  • 写回答

1条回答

  • 鼠晓 博客专家认证 2019-02-17 15:33
    关注

    在java里面其实是不应该有全局变量这个说发的(一切皆对象跟全局变量冲突啦)

    题主在匿名内部类中调用,所谓的全局变量【musicList】肯定是有问题的,,

    试试把这个所谓的全局变量换成【某个类的静态属性】(java中静态成员属性是可以当做所谓的全局变量使用的)

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥20 java-OJ-健康体检
  • ¥15 rs485的上拉下拉,不会对a-b<-200mv有影响吗,就是接受时,对判断逻辑0有影响吗
  • ¥15 使用phpstudy在云服务器上搭建个人网站
  • ¥15 应该如何判断含间隙的曲柄摇杆机构,轴与轴承是否发生了碰撞?
  • ¥15 vue3+express部署到nginx
  • ¥20 搭建pt1000三线制高精度测温电路
  • ¥15 使用Jdk8自带的算法,和Jdk11自带的加密结果会一样吗,不一样的话有什么解决方案,Jdk不能升级的情况
  • ¥15 画两个图 python或R
  • ¥15 在线请求openmv与pixhawk 实现实时目标跟踪的具体通讯方法
  • ¥15 八路抢答器设计出现故障