这是我的问题,请参阅以下代码
PlayListNameDialog newPlaylistDialog=new PlayListNameDialog();
newPlaylistDialog.show(getFragmentManager(),"new playlist");
ArrayList<String> tempAdd=new ArrayList();
tempAdd.add(currentSong);
QueryMusic.playlistCollection.put(QueryMusic.playlistNameList.get(0),tempAdd);
SimpleMusicMainActivity.fragmentPagerAdapter.notifyDataSetChanged();
Toast.makeText(getContext(), "Added successfully", Toast.LENGTH_SHORT).show();
按下确定按钮时,和对话框中的代码
okButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
plName=playListName.getText().toString();
if (!QueryMusic.playlistNameList.contains(plName))
QueryMusic.playlistNameList.add(plName);
if (!plName.isEmpty()&&plName.trim().length()>0)
PlayListNameDialog.this.dismiss();
else
Snackbar.make(okButton,"Please input again",Snackbar.LENGTH_SHORT).show();
}
});
我的想法是在对话框显示之后,将用户输入的播放列表名称放入QueryMusic.playlistNameList。
但每次下面的代码都会在对话框显示之前执行。所以总是得到playlistCollection.put null异常错误。
QueryMusic.playlistCollection.put(QueryMusic.playlistNameList.get(0),tempAdd);
任何人都可以帮我一个忙,告诉我为什么以及如何解决?
提前致谢。
这是logcat
java.lang.IndexOutOfBoundsException: Invalid index 0, size is 0
at java.util.ArrayList.throwIndexOutOfBoundsException(ArrayList.java:255)
at java.util.ArrayList.get(ArrayList.java:308)
at com.flover.simplemusic.AddToExistedPlaylist$1.onItemClick(AddToExistedPlaylist.java:59)
at android.widget.AdapterView.performItemClick(AdapterView.java:310)
at android.widget.AbsListView.performItemClick(AbsListView.java:1188)
at android.widget.AbsListView$PerformClick.run(AbsListView.java:3105)
at android.widget.AbsListView$3.run(AbsListView.java:4096)
at android.os.Handler.handleCallback(Handler.java:739)
at android.os.Handler.dispatchMessage(Handler.java:95)
at android.os.Looper.loop(Looper.java:148)
at android.app.ActivityThread.main(ActivityThread.java:5527)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:730)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:620)
at de.robv.android.xposed.XposedBridge.main(XposedBridge.java:117)