简体   繁体   中英

Mediaplayer NullPointerException

I use mediaplayer at my application (mp3 sounds for ringtones). My application working correctly but I see error report on google play developer console (only some users) Where is the problem, I don't know, thank you (I tested every sound)

public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    soundname= new String[]  {"Sound1","Sound2","Sound3","Sound4","Sound5","Sound6"}; 
    soundfile= new int[] {R.raw.sound1,R.raw.sound2,R.raw.sound3,R.raw.sound4,R.raw.sound5,R.raw.sound6};

    this.setContentView(R.layout.single_list_item_view);

    TextView txtProduct = (TextView) findViewById(R.id.product_label);
    Intent intent = getIntent();
    int position = intent.getExtras().getInt("position");

    txtProduct.setText(soundname[position]);
    mediaPlayer = MediaPlayer.create(this, soundfile[position]); 

    Button btnplay= (Button) findViewById(R.id.btnoynat);
    btnplay.setOnClickListener(new View.OnClickListener(){

        public void onClick(View arg0) { 
                mediaPlayer.start();         
        }
        });

Error log; (mediaPlayer.start();-->SingleListItem.java:60)

java.lang.NullPointerException
at com.zilsesleri.SingleListItem$1.onClick(SingleListItem.java:60)  
at android.view.View.performClick(View.java:2538)
at android.view.View$PerformClick.run(View.java:9152)
at android.os.Handler.handleCallback(Handler.java:587)
at android.os.Handler.dispatchMessage(Handler.java:92)
at android.os.Looper.loop(Looper.java:130)
at android.app.ActivityThread.main(ActivityThread.java:3693)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:507)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:907)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:665)
at dalvik.system.NativeStart.main(Native Method)

Android can only allocate a certain amount of MediaPlayer objects, this requires the devloper to release any MediaPlayer object once done with it, by calling mediaPlayer.release();

unfortunately many developers don't practice that, which causes the MeadiaPlayer pool of objects return null instead of allocating new ones.

To read more about this: MediPlayer API

anyway, you may want to check for null and handle this in a way that fits in your app.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM