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,这就是我想说的。希望你能找到我,先生