簡體   English   中英

當我從活動回到主界面時,應用保持崩潰

[英]App keep crash when I click back from activity to main

我收到此錯誤消息:

09-05 19:58:00.883: E/AndroidRuntime(21920): java.lang.RuntimeException: Unable to pause      activity {com.De7kat.Grid/com.De7kat.Grid.De7katGrid}: java.lang.NullPointerException

當我進入活動2並嘗試通過單擊設備上的“后退”按鈕返回活動1時。

de7katgrid活動代碼是:

package com.De7kat.Grid;


public class De7katGrid extends Activity {
private MediaPlayer mp;
public Integer[] mSongsIds = {
        R.raw.beet,R.raw.far,
        R.raw.beet,R.raw.far,
        R.raw.beet,R.raw.far,
        R.raw.beet,R.raw.far,
        R.raw.beet,R.raw.far,
        R.raw.beet,R.raw.far,
        R.raw.beet,R.raw.far,
        R.raw.beet,R.raw.far,
        R.raw.beet,R.raw.far,
        R.raw.beet,R.raw.far,
        R.raw.beet,R.raw.far,
        R.raw.beet,    };
public Object getItem(int position) {
    return mSongsIds[position];
}
@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.grid_layout);

    GridView gridView = (GridView) findViewById(R.id.grid_view);

    // Instance of ImageAdapter Class
    gridView.setAdapter(new ImageAdapter(this));

    gridView.setOnItemClickListener(new OnItemClickListener() {
        @Override
        public void onItemClick(AdapterView<?> parent, View v,
                int position, long id) {
             stopPlaying();
             mp = MediaPlayer.create(De7katGrid.this,mSongsIds[position]);
             mp.start();

           }
    });
}
@Override
public void onPause() {
    super.onPause();
    if (mp.isPlaying()) {
       mp.stop();



    }
}

    private void stopPlaying() {
        if (mp != null) {
            mp.stop();
            mp.release();
            mp = null;


       }
    }
 }

當您返回到Activity時,調用create()mpnull ,因為您無法釋放前一個。 像這樣更改您的onPause()方法:

@Override
public void onPause() {
    super.onPause();
    stopPlaying();
}

為什么不在onPause()調用stopPlaying()方法? 它比復制代碼更好(並且您將擺脫NullPointerException ,因為您不檢查mp是否為null,這會發生):

@Override
public void onPause() {
    super.onPause();
    stopPlaying();
}

我認為您的mp在調用onPause時為null。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM