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

安卓开发中,我在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中静态成员属性是可以当做所谓的全局变量使用的)

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

报告相同问题?

悬赏问题

  • ¥50 comsol稳态求解器 找不到解,奇异矩阵有1个空方程返回的解不收敛。没有返回所有参数步长;pid控制
  • ¥15 怎么让wx群机器人发送音乐
  • ¥15 fesafe材料库问题
  • ¥35 beats蓝牙耳机怎么查看日志
  • ¥15 Fluent齿轮搅油
  • ¥15 八爪鱼爬数据为什么自己停了
  • ¥15 交替优化波束形成和ris反射角使保密速率最大化
  • ¥15 树莓派与pix飞控通信
  • ¥15 自动转发微信群信息到另外一个微信群
  • ¥15 outlook无法配置成功