Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/328.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/197.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何从“访问”;onCreate();同一类的另一个方法中的Arraylist变量?_Java_Android_Arraylist - Fatal编程技术网

Java 如何从“访问”;onCreate();同一类的另一个方法中的Arraylist变量?

Java 如何从“访问”;onCreate();同一类的另一个方法中的Arraylist变量?,java,android,arraylist,Java,Android,Arraylist,我想访问一个全局声明的Arraylist变量(mySongs),该变量在另一个名为btnNext()的方法中的onCreate()方法中使用。使用Intent从另一个类获取此变量的值 但是我无法在btnNext()方法中获取该变量的值 Intent i = getIntent(); Bundle b = i.getExtras(); mySongs = (ArrayList) b.getParcelableArrayList("songlist"); position = b.getInt("p

我想访问一个全局声明的
Arraylist
变量(mySongs),该变量在另一个名为
btnNext()
的方法中的
onCreate()
方法中使用。使用
Intent
从另一个类获取此变量的值

但是我无法在
btnNext()
方法中获取该变量的值

Intent i = getIntent();
Bundle b = i.getExtras();
mySongs = (ArrayList) b.getParcelableArrayList("songlist");
position = b.getInt("pos",0);
它在这个变量上给出了一个空指针异常。在日志中检查时,它在方法中显示“null”,而在
btnNext()
方法之外的日志中检查时,它工作正常

public void btnNext(){
    Log.d("DATA", "songs"+mySongs);

    if(isRepeat==true || isShuffle==true)
    {
        isRepeat = false;
        btnRepeat.setImageResource(R.drawable.btn_repeat_default);

        isShuffle = false;
        btnShuffle.setImageResource(R.drawable.btn_shuffle_default);
    }
    mp.stop();
    mp.release();
    position = (position+1) % mySongs.size();
    Log.d("DATA", "p"+position);
    u = Uri.parse(mySongs.get(position).toString());
    mp = MediaPlayer.create(getApplicationContext(),u);
    displaySongName(position);
    mp.start();
    btnPlay.setImageResource(R.drawable.btn_pause);
    //Toast.makeText(this, "Method called", Toast.LENGTH_SHORT).show();
    Log.d("DATA", "p");    
}
有什么问题吗?

更换这个

mySongs = (ArrayList) b.getParcelableArrayList("songlist"); 
用这个

mySongs = new ArrayList<Object>(b.getParcelableArrayList("songlist"));
mySongs=newarraylist(b.getParcelableArrayList(“歌曲列表”);
更换此

mySongs = (ArrayList) b.getParcelableArrayList("songlist"); 
用这个

mySongs = new ArrayList<Object>(b.getParcelableArrayList("songlist"));
mySongs=newarraylist(b.getParcelableArrayList(“歌曲列表”);

将其
公开
静态
,您将能够将
数组列表
传递给另一个类。但是,更好的方法是使用
Serializable
Parcelable
传递它

使用它

mySongs = new ArrayList<Object>(b.getParcelableArrayList("songlist"));
mySongs=newarraylist(b.getParcelableArrayList(“歌曲列表”);

将其
公开
静态
,您将能够将
数组列表
传递给另一个类。但是,更好的方法是使用
Serializable
Parcelable
传递它

使用它

mySongs = new ArrayList<Object>(b.getParcelableArrayList("songlist"));
mySongs=newarraylist(b.getParcelableArrayList(“歌曲列表”);

您全局声明了mySongs,但是否在onCreate()中创建了它的实例


您全局声明了mySongs,但是否在onCreate()中创建了它的实例


女士,我想如果是静态的,你应该把代码改成
Classname.mySongs
,说到parcelable,我想它已经在做了,如果是静态的,你应该把代码改成
Classname.mySongs
,说到parcelable,我想它已经在做了,如果是静态的,你应该这样做将代码改为
Classname.mySongs
,说到parcelable,我认为它已经被完成了
=
意味着它指向了一个地址,不是吗?先生
new
意味着创建一个新的地址对不起,刚才看到了你的答案,缺少参数。在将来发布一个之前,我会检查所有答案:)不,不,先生,我的意思是他已经指向另一个arraylist,所以你的解决方案将阻止NPE,但不会给他他首选的arraylist,这就是我想说的。希望你能告诉我Sirguess
=
的意思是指向地址,不是吗?先生
new
意味着创建一个新的地址对不起,刚才看到了你的答案,缺少参数。在将来发布一个之前,我会检查所有答案:)不,不,先生,我的意思是他已经指向另一个arraylist,所以你的解决方案将阻止NPE,但不会给他他首选的arraylist,这就是我想说的。希望你能告诉我Sirguess
=
的意思是指向地址,不是吗?先生
new
意味着创建一个新的地址对不起,刚才看到了你的答案,缺少参数。在将来发布一个之前,我会检查所有答案:)不,不,先生,我的意思是他已经指向另一个arraylist,所以你的解决方案将阻止NPE,但不会给他他首选的arraylist,这就是我想说的。希望你能找到我,先生