[英]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()
后mp
為null
,因為您無法釋放前一個。 像這樣更改您的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.