Tuesday, 20 August 2013

Android NullPointerException only in Galaxy SII/III phones

Android NullPointerException only in Galaxy SII/III phones

In my app, users select from a ListView and it plays a song based on the
position. Galaxy SII\SIII phones are throwing NullPointerExceptions when
the user tries to select a song. I set the activity to keep the portrait
orientation, and have one main layout(activity_main.xml).
Crash Report:
java.lang.NullPointerException
at com.soundboard.MainActivity.playSong(MainActivity.java:466)
at com.soundboard.MainActivity$10.onItemClick(MainActivity.java:286)
at android.widget.AdapterView.performItemClick(AdapterView.java:301)
at android.widget.AbsListView.performItemClick(AbsListView.java:1519)
at android.widget.AbsListView$PerformClick.run(AbsListView.java:3278)
at android.widget.AbsListView$1.run(AbsListView.java:4327)
at android.os.Handler.handleCallback(Handler.java:725)
at android.os.Handler.dispatchMessage(Handler.java:92)
at android.os.Looper.loop(Looper.java:137)
at android.app.ActivityThread.main(ActivityThread.java:5293)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:511)
at
com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1102)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:869)
at dalvik.system.NativeStart.main(Native Method)
Code:
public void playSong(int songIndex){
Log.d(TAG, "Starting playSong(" + songIndex + ")");
FlurryAgent.logEvent("Starting playSong("+songIndex+")");
try {
if(mp != null){
mp.release();
}
try{
mp = MediaPlayer.create(MainActivity.this,
songManager.getSong(songIndex).getResId());
} catch(Exception e){
FlurryAgent.logEvent("playSong():mediaPlayer.create");
}
try{
mp.prepare();
} catch(Exception e){
Log.e(TAG, "Caught error preparing: "+e.getMessage());
FlurryAgent.logEvent("playSong():mediaPlayer.prepare");
e.printStackTrace();
}
mp.start();
FlurryAgent.logEvent("mp.start()");
// Displaying Song title
String songTitle = songManager.getSong(songIndex).getName();
songTitleLabel.setText(songTitle);
// Changing Button Image to pause image
btnPlay.setImageResource(R.drawable.btn_pause);
// set Progress bar values
songProgressBar.setProgress(0);
songProgressBar.setMax(100);
// Updating progress bar
updateProgressBar();
} catch (IllegalArgumentException e) {
Log.e(TAG, "Caught IllegalArgumentException: "+e.getMessage());
} catch (IllegalStateException e) {
Log.e(TAG, "Caught IllegalStateException: "+e.getMessage());
}
}

No comments:

Post a Comment