android - null pointer error- Unable to start activity ComponentInfo -
i'm getting null pointer exception , i'm confused. can help me please? if need more information,please allow me know.thanks in advance help.here's activity file:
public class androidbuildingmusicplayeractivity extends activity implements oncompletionlistener, seekbar.onseekbarchangelistener { private imagebutton btnplay; private imagebutton btnforward; private imagebutton btnbackward; private imagebutton btnnext; private imagebutton btnprevious; private imagebutton btnplaylist; private imagebutton btnrepeat; private imagebutton btnshuffle; private seekbar songprogressbar; private textview songtitlelabel; private textview songcurrentdurationlabel; private textview songtotaldurationlabel; // media player private mediaplayer mp; // handler update ui timer, progress bar etc,. private handler mhandler = new handler();; private songsmanager songmanager; private utilities utils; private int seekforwardtime = 5000; // 5000 milliseconds private int seekbackwardtime = 5000; // 5000 milliseconds private int currentsongindex = 0; private boolean isshuffle = false; private boolean isrepeat = false; private arraylist<hashmap<string, string>> songslist = new arraylist<hashmap<string, string>>(); @override public void oncreate(bundle savedinstancestate) { super.oncreate(savedinstancestate); setcontentview(r.layout.player); // player buttons btnplay = (imagebutton) findviewbyid(r.id.btnplay); btnforward = (imagebutton) findviewbyid(r.id.btnforward); btnbackward = (imagebutton) findviewbyid(r.id.btnbackward); btnnext = (imagebutton) findviewbyid(r.id.btnnext); btnprevious = (imagebutton) findviewbyid(r.id.btnprevious); btnplaylist = (imagebutton) findviewbyid(r.id.btnplaylist); btnrepeat = (imagebutton) findviewbyid(r.id.btnrepeat); btnshuffle = (imagebutton) findviewbyid(r.id.btnshuffle); songprogressbar = (seekbar) findviewbyid(r.id.songprogressbar); songtitlelabel = (textview) findviewbyid(r.id.songtitle); songcurrentdurationlabel = (textview) findviewbyid(r.id.songcurrentdurationlabel); songtotaldurationlabel = (textview) findviewbyid(r.id.songtotaldurationlabel); // mediaplayer mp = new mediaplayer(); songmanager = new songsmanager(); utils = new utilities(); // listeners songprogressbar.setonseekbarchangelistener(this); // of import mp.setoncompletionlistener(this); // of import // getting songs list songslist = songmanager.getplaylist(); // default play first song playsong(0); /** * play button click event * plays song , changes button pause image * pauses song , changes button play image * */ btnplay.setonclicklistener(new view.onclicklistener() { @override public void onclick(view arg0) { // check playing if(mp.isplaying()){ if(mp!=null){ mp.pause(); // changing button image play button btnplay.setimageresource(r.drawable.btn_play); } }else{ // resume song if(mp!=null){ mp.start(); // changing button image pause button btnplay.setimageresource(r.drawable.btn_pause); } } } }); /** * forwards button click event * forwards song specified seconds * */ btnforward.setonclicklistener(new view.onclicklistener() { @override public void onclick(view arg0) { // current song position int currentposition = mp.getcurrentposition(); // check if seekforward time lesser song duration if(currentposition + seekforwardtime <= mp.getduration()){ // forwards song mp.seekto(currentposition + seekforwardtime); }else{ // forwards end position mp.seekto(mp.getduration()); } } }); /** * backward button click event * backward song specified seconds * */ btnbackward.setonclicklistener(new view.onclicklistener() { @override public void onclick(view arg0) { // current song position int currentposition = mp.getcurrentposition(); // check if seekbackward time greater 0 sec if(currentposition - seekbackwardtime >= 0){ // forwards song mp.seekto(currentposition - seekbackwardtime); }else{ // backward starting position mp.seekto(0); } } }); /** * next button click event * plays next song taking currentsongindex + 1 * */ btnnext.setonclicklistener(new view.onclicklistener() { @override public void onclick(view arg0) { // check if next song there or not if(currentsongindex < (songslist.size() - 1)){ playsong(currentsongindex + 1); currentsongindex = currentsongindex + 1; }else{ // play first song playsong(0); currentsongindex = 0; } } }); /** * button click event * plays previous song currentsongindex - 1 * */ btnprevious.setonclicklistener(new view.onclicklistener() { @override public void onclick(view arg0) { if(currentsongindex > 0){ playsong(currentsongindex - 1); currentsongindex = currentsongindex - 1; }else{ // play lastly song playsong(songslist.size() - 1); currentsongindex = songslist.size() - 1; } } }); /** * button click event repeat button * enables repeat flag true * */ btnrepeat.setonclicklistener(new view.onclicklistener() { @override public void onclick(view arg0) { if(isrepeat){ isrepeat = false; toast.maketext(getapplicationcontext(), "repeat off", toast.length_short).show(); btnrepeat.setimageresource(r.drawable.btn_repeat); }else{ // create repeat true isrepeat = true; toast.maketext(getapplicationcontext(), "repeat on", toast.length_short).show(); // create shuffle false isshuffle = false; btnrepeat.setimageresource(r.drawable.btn_repeat_focused); btnshuffle.setimageresource(r.drawable.btn_shuffle); } } }); /** * button click event shuffle button * enables shuffle flag true * */ btnshuffle.setonclicklistener(new view.onclicklistener() { @override public void onclick(view arg0) { if(isshuffle){ isshuffle = false; toast.maketext(getapplicationcontext(), "shuffle off", toast.length_short).show(); btnshuffle.setimageresource(r.drawable.btn_shuffle); }else{ // create repeat true isshuffle= true; toast.maketext(getapplicationcontext(), "shuffle on", toast.length_short).show(); // create shuffle false isrepeat = false; btnshuffle.setimageresource(r.drawable.btn_shuffle_focused); btnrepeat.setimageresource(r.drawable.btn_repeat); } } }); /** * button click event play list click event * launches list activity displays list of songs * */ btnplaylist.setonclicklistener(new view.onclicklistener() { @override public void onclick(view arg0) { intent = new intent(getapplicationcontext(), playlistactivity.class); startactivityforresult(i, 100); } }); } /** * receiving song index playlist view * , play song * */ @override protected void onactivityresult(int requestcode, int resultcode, intent data) { super.onactivityresult(requestcode, resultcode, data); if(resultcode == 100){ currentsongindex = data.getextras().getint("songindex"); // play selected song playsong(currentsongindex); } } /** * function play song * @param songindex - index of song * */ public void playsong(int songindex){ // play song seek { mp.reset(); mp.setdatasource(songslist.get(songindex).get("songpath")); mp.prepare(); mp.start(); // displaying song title string songtitle = songslist.get(songindex).get("songtitle"); songtitlelabel.settext(songtitle); // changing button image pause image btnplay.setimageresource(r.drawable.btn_pause); // set progress bar values songprogressbar.setprogress(0); songprogressbar.setmax(100); // updating progress bar updateprogressbar(); } grab (illegalargumentexception e) { e.printstacktrace(); } grab (illegalstateexception e) { e.printstacktrace(); } grab (ioexception e) { e.printstacktrace(); } } /** * update timer on seekbar * */ public void updateprogressbar() { mhandler.postdelayed(mupdatetimetask, 100); } /** * background runnable thread * */ private runnable mupdatetimetask = new runnable() { public void run() { long totalduration = mp.getduration(); long currentduration = mp.getcurrentposition(); // displaying total duration time songtotaldurationlabel.settext(""+utils.millisecondstotimer(totalduration)); // displaying time completed playing songcurrentdurationlabel.settext(""+utils.millisecondstotimer(currentduration)); // updating progress bar int progress = (int)(utils.getprogresspercentage(currentduration, totalduration)); //log.d("progress", ""+progress); songprogressbar.setprogress(progress); // running thread after 100 milliseconds mhandler.postdelayed(this, 100); } }; /** * * */ @override public void onprogresschanged(seekbar seekbar, int progress, boolean fromtouch) { } /** * when user starts moving progress handler * */ @override public void onstarttrackingtouch(seekbar seekbar) { // remove message handler updating progress bar mhandler.removecallbacks(mupdatetimetask); } /** * when user stops moving progress hanlder * */ @override public void onstoptrackingtouch(seekbar seekbar) { mhandler.removecallbacks(mupdatetimetask); int totalduration = mp.getduration(); int currentposition = utils.progresstotimer(seekbar.getprogress(), totalduration); // forwards or backward seconds mp.seekto(currentposition); // update timer progress 1 time again updateprogressbar(); } /** * on song playing completed * if repeat on play same song 1 time again * if shuffle on play random song * */ @override public void oncompletion(mediaplayer arg0) { // check repeat on or off if(isrepeat){ // repeat on play same song 1 time again playsong(currentsongindex); } else if(isshuffle){ // shuffle on - play random song random rand = new random(); currentsongindex = rand.nextint((songslist.size() - 1) - 0 + 1) + 0; playsong(currentsongindex); } else{ // no repeat or shuffle on - play next song if(currentsongindex < (songslist.size() - 1)){ playsong(currentsongindex + 1); currentsongindex = currentsongindex + 1; }else{ // play first song playsong(0); currentsongindex = 0; } } } @override public void ondestroy(){ super.ondestroy(); mp.release(); }
}
and here's logcat:
06-19 02:22:17.080: d/androidruntime(837): shutting downwards vm 06-19 02:22:17.080: w/dalvikvm(837): threadid=1: thread exiting uncaught exception (group=0xb2a12ba8) 06-19 02:22:17.330: d/dalvikvm(837): gc_for_alloc freed 68k, 5% free 3143k/3292k, paused 204ms, total 216ms 06-19 02:22:17.360: w/mediaplayer-jni(837): mediaplayer finalized without beingness released 06-19 02:22:17.370: e/androidruntime(837): fatal exception: main 06-19 02:22:17.370: e/androidruntime(837): process: com.androidhive.musicplayer, pid: 837 06-19 02:22:17.370: e/androidruntime(837): java.lang.runtimeexception: unable start activity componentinfo{com.androidhive.musicplayer/com.androidhive.musicplayer.androidbuildingmusicplayeractivity}: java.lang.nullpointerexception 06-19 02:22:17.370: e/androidruntime(837): @ android.app.activitythread.performlaunchactivity(activitythread.java:2195) 06-19 02:22:17.370: e/androidruntime(837): @ android.app.activitythread.handlelaunchactivity(activitythread.java:2245) 06-19 02:22:17.370: e/androidruntime(837): @ android.app.activitythread.access$800(activitythread.java:135) 06-19 02:22:17.370: e/androidruntime(837): @ android.app.activitythread$h.handlemessage(activitythread.java:1196) 06-19 02:22:17.370: e/androidruntime(837): @ android.os.handler.dispatchmessage(handler.java:102) 06-19 02:22:17.370: e/androidruntime(837): @ android.os.looper.loop(looper.java:136) 06-19 02:22:17.370: e/androidruntime(837): @ android.app.activitythread.main(activitythread.java:5017) 06-19 02:22:17.370: e/androidruntime(837): @ java.lang.reflect.method.invokenative(native method) 06-19 02:22:17.370: e/androidruntime(837): @ java.lang.reflect.method.invoke(method.java:515) 06-19 02:22:17.370: e/androidruntime(837): @ com.android.internal.os.zygoteinit$methodandargscaller.run(zygoteinit.java:779) 06-19 02:22:17.370: e/androidruntime(837): @ com.android.internal.os.zygoteinit.main(zygoteinit.java:595) 06-19 02:22:17.370: e/androidruntime(837): @ dalvik.system.nativestart.main(native method) 06-19 02:22:17.370: e/androidruntime(837): caused by: java.lang.nullpointerexception 06-19 02:22:17.370: e/androidruntime(837): @ com.androidhive.musicplayer.songsmanager.getplaylist(songsmanager.java:25) 06-19 02:22:17.370: e/androidruntime(837): @ com.androidhive.musicplayer.androidbuildingmusicplayeractivity.oncreate(androidbuildingmusicplayeractivity.java:77) 06-19 02:22:17.370: e/androidruntime(837): @ android.app.activity.performcreate(activity.java:5231) 06-19 02:22:17.370: e/androidruntime(837): @ android.app.instrumentation.callactivityoncreate(instrumentation.java:1087) 06-19 02:22:17.370: e/androidruntime(837): @ android.app.activitythread.performlaunchactivity(activitythread.java:2159) 06-19 02:22:17.370: e/androidruntime(837): ... 11 more
songmanager file:
public class songsmanager { // sdcard path final string media_path = new string("/sdcard/"); private arraylist<hashmap<string, string>> songslist = new arraylist<hashmap<string, string>>(); // constructor public songsmanager(){ } /** * function read mp3 files sdcard * , store details in arraylist * */ public arraylist<hashmap<string, string>> getplaylist(){ file home = new file(media_path); if (home.listfiles(new fileextensionfilter()).length > 0) { (file file : home.listfiles(new fileextensionfilter())) { hashmap<string, string> song = new hashmap<string, string>(); song.put("songtitle", file.getname().substring(0, (file.getname().length() - 4))); song.put("songpath", file.getpath()); // adding each song songlist songslist.add(song); } } // homecoming songs list array homecoming songslist; } /** * class filter files having .mp3 extension * */ class fileextensionfilter implements filenamefilter { public boolean accept(file dir, string name) { homecoming (name.endswith(".mp3") || name.endswith(".mp3")); } } }
your nullpointerexception
throws @ line: songslist.add(song);
(line 25)
you seems forgot create new instance songslist
android nullpointerexception
No comments:
Post a Comment