2012-09-05 49 views
0

我得到這個錯誤信息:應用程序保持崩潰,當我點擊從活動返回主

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; 


     } 
    } 
} 
+0

堆棧跟蹤,堆棧跟蹤,堆棧跟蹤。如果沒有它,我會說,這是因爲你正在'onPause()'中執行'mp.isPlaying()'而不檢查'mp'是否爲空。 – kcoppock

+0

LogCat輸出請? – Swayam

回答

0

當您返回到您的活動mpnull你打電話create()後,因爲你沒有釋放前一個。更改onPause()方法,像這樣:

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

謝謝你工作好:) –

0

你爲什麼不打電話給你stopPlaying()方法onPause()?這是不是重複的代碼更好的(你會擺脫NullPointerException,這是因爲你不檢查,如果mp是空的):

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

我覺得你的熔點爲空時的onPause被調用。

相關問題