• 26-09-2017, 23:28:35
    #1
    Android studioda custom listview kullanıyorum. Liste elemanlarına tıklayınca sesler çalıyor. Uygulamadan geri çıkılınca yani onbackpressed tetiklenince mediaPlayer stop diyerek sesi kesmek istiyorum.

    CustomListAdapterdeki Mediaplayer ile alakalı kodlar

    @Override
        public View getView(final int i, View view, ViewGroup viewGroup) {
            view =inflate.inflate(R.layout.custom_list,null);
            TextView tv_title = view.findViewById(R.id.tv_title);
            Button btn_fav = view.findViewById(R.id.btn_fav);
            Button btn_share = view.findViewById(R.id.btn_share);
            tv_title.setText(title[i]);
            final String path = nick+String.valueOf(i+1);
            final MediaPlayer[] mediaPlayer = {MediaPlayer.create(context, R.raw.dj1)};
            btn_share.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View view) {
                    SHARE(path);
                }
            });
            view.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View view) {
                    mediaPlayer[0].stop();
                    int md_play = context.getResources().getIdentifier(path,"raw",context.getPackageName());
                     mediaPlayer[0] = MediaPlayer.create(context,md_play);
                    mediaPlayer[0].start();
                    Toast.makeText(context, "ÖĞE NO: "+ String.valueOf(i), Toast.LENGTH_SHORT).show();
                }
            });
            return view;
        }
    OnbackPresseddeki kodlar
    @Override public void onBackPressed() { CustomAdapter customAdapter= new CustomAdapter(this,title,sound,nic); customAdapter.mediaPlayer.stop(); customAdapter.mediaPlayer.reset(); super.onBackPressed(); }
    Normalde bu şekilde çalışmasını bekliyordum fakat ses çalarken geri çıkmaya çalışınca uygulama çöküyor. Aldığım temel hata şu
    java.lang.NullPointerException: Attempt to invoke virtual method 'void android.media.MediaPlayer.stop()' on a null object reference
    Ayrıntılar Şu şekilde
    Process: com.mssapp.apptest, PID: 31385
    java.lang.NullPointerException: Attempt to invoke virtual method 'void android.media.MediaPlayer.stop()' on a null object reference
    at com.mssapp.apptest.MainActivity.onBackPressed(Main Activity.java:107)
    at android.app.Activity.onKeyUp(Activity.java:2727)
    at android.view.KeyEvent.dispatch(KeyEvent.java:3290)
    at android.app.Activity.dispatchKeyEvent(Activity.jav a:2997)
    at android.support.v7.app.AppCompatActivity.dispatchK eyEvent(AppCompatActivity.java:540)
    at android.support.v7.view.WindowCallbackWrapper.disp atchKeyEvent(WindowCallbackWrapper.java:58)
    at android.support.v7.app.AppCompatDelegateImplBase$A ppCompatWindowCallbackBase.dispatchKeyEvent(AppCom patDelegateImplBase.java:317)
    at com.android.internal.policy.PhoneWindow$DecorView. dispatchKeyEvent(PhoneWindow.java:2735)
    at android.view.ViewRootImpl$ViewPostImeInputStage.pr ocessKeyEvent(ViewRootImpl.java:5405)
    at android.view.ViewRootImpl$ViewPostImeInputStage.on Process(ViewRootImpl.java:5358)
    at android.view.ViewRootImpl$InputStage.deliver(ViewR ootImpl.java:4810)
    at android.view.ViewRootImpl$InputStage.onDeliverToNe xt(ViewRootImpl.java:4863)
    at android.view.ViewRootImpl$InputStage.forward(ViewR ootImpl.java:4829)
    at android.view.ViewRootImpl$AsyncInputStage.forward( ViewRootImpl.java:4970)
    at android.view.ViewRootImpl$InputStage.apply(ViewRoo tImpl.java:4837)
    at android.view.ViewRootImpl$AsyncInputStage.apply(Vi ewRootImpl.java:5027)
    at android.view.ViewRootImpl$InputStage.deliver(ViewR ootImpl.java:4810)
    at android.view.ViewRootImpl$InputStage.onDeliverToNe xt(ViewRootImpl.java:4863)
    at android.view.ViewRootImpl$InputStage.forward(ViewR ootImpl.java:4829)
    at android.view.ViewRootImpl$InputStage.apply(ViewRoo tImpl.java:4837)
    at android.view.ViewRootImpl$InputStage.deliver(ViewR ootImpl.java:4810)
    at android.view.ViewRootImpl$InputStage.onDeliverToNe xt(ViewRootImpl.java:4863)
    at android.view.ViewRootImpl$InputStage.forward(ViewR ootImpl.java:4829)
    at android.view.ViewRootImpl$AsyncInputStage.forward( ViewRootImpl.java:5003)
    at android.view.ViewRootImpl$ImeInputStage.onFinished InputEvent(ViewRootImpl.java:5248)
    at android.view.inputmethod.InputMethodManager$Pendin gEvent.run(InputMethodManager.java:2920)
    at android.view.inputmethod.InputMethodManager.invoke FinishedInputEventCallback(InputMethodManager.java :2479)
    at android.view.inputmethod.InputMethodManager.finish edInputEvent(InputMethodManager.java:2470)
    at android.view.inputmethod.InputMethodManager$ImeInp utEventSender.onInputEventFinished(InputMethodMana ger.java:2897)
    at android.view.InputEventSender.dispatchInputEventFi nished(InputEventSender.java:141)
    at android.os.MessageQueue.nativePollOnce(Native Method)
    at android.os.MessageQueue.next(MessageQueue.java:323 )
    at android.os.Looper.loop(Looper.java:135)
    at android.app.ActivityThread.main(ActivityThread.jav a:7409)
    at java.lang.reflect.Method.invoke(Native Method)
    at com.android.internal.os.ZygoteInit$MethodAndArgsCa ller.run(ZygoteInit.java:1230)
    at com.android.internal.os.ZygoteInit.main(ZygoteInit .java:1120)

    Diğer classta mediplayer null olmamasına rağmen mainactivityde neden null dönüyor olabilir ?
  • 26-09-2017, 23:37:57
    #2
    Kategori Moderatörü
    mediaPlayer[0].stop();
    bu işe yaramıyormu denedinizmi
    @Override public void onBackPressed() {
    mediaPlayer[0].stop();
    super.onBackPressed(); }
  • 26-09-2017, 23:40:35
    #3
    Yazilimapp adlı üyeden alıntı: mesajı görüntüle
    mediaPlayer[0].stop();
    bu işe yaramıyormu denedinizmi
    @Override public void onBackPressed() {
    mediaPlayer[0].stop();
    super.onBackPressed(); }
    hayır hocam işe yaramıyor maalesef.
  • 26-09-2017, 23:50:38
    #4
    Üyeliği durduruldu
    getView fonksiyonu dışında mediaPlayer tanımladın mı ?
    Örnek : public class Adapter extends BaseAdapter
    Mediaplayer mPlayer;
    Fonksiyon dışında tanımladıysan getView içerisinde mPlayer = mediaPlayer[0]; olarak atamayı unutmuşsundur belki.
  • 27-09-2017, 00:29:08
    #5
    bekmekci_ adlı üyeden alıntı: mesajı görüntüle
    getView fonksiyonu dışında mediaPlayer tanımladın mı ?
    Örnek : public class Adapter extends BaseAdapter
    Mediaplayer mPlayer;
    Fonksiyon dışında tanımladıysan getView içerisinde mPlayer = mediaPlayer[0]; olarak atamayı unutmuşsundur belki.
    Yazilimapp adlı üyeden alıntı: mesajı görüntüle
    mediaPlayer[0].stop();
    bu işe yaramıyormu denedinizmi
    @Override public void onBackPressed() {
    mediaPlayer[0].stop();
    super.onBackPressed(); }
    Sorunu çözdüm. Mediplayerin adapterde static olarak tanımlanması gerekiyormuş. Ondan sonra adapterde stop media player diye bir method oluşturup onu çağırınca çalıştı. Zaman ayırıp fikir beyan ettiğiniz için teşekkür ederim.