2015-04-07 222 views
-1

我一直在嘗試恢復/重新啓動活動。如何恢復已暫停的活動

預期結果: - 當用戶打開App時,菜單活動會在啓動屏幕及其背景音樂後打開。然後可以導航到其他活動。因此在移動到其他活動並使用手機的後退按鈕返回菜單後菜單的背景音樂必須重新啓動。

問題: - 重新調回音樂後不會重新啓動,也不會按住home按鈕並回到應用程序。

到目前爲止我做了什麼: - 我嘗試使用onRestart()和onResume(),但都給我致命錯誤。 代碼菜單活動: -

public class Menu extends ListActivity { 
MediaPlayer song; 

String classes[] = { "MainActivity", "Text", "Email", "Sample", "About", 
     "AboutMe", "example6"}; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    // TODO Auto-generated method stub 
    super.onCreate(savedInstanceState); 
    setListAdapter(new ArrayAdapter<String>(Menu.this, android.R.layout.simple_expandable_list_item_1, classes)); 
    song = MediaPlayer.create(Menu.this, R.raw.backmusic); 
    song.start(); 
} 

@Override 
protected void onListItemClick(ListView l, View v, int position, long id) { 
    // TODO Auto-generated method stub 
    super.onListItemClick(l, v, position, id); 
    String cheese = classes[position]; 
    try{ 
    Class ourClass = Class.forName("com.stenstudios.secondapp." + cheese); 
    Intent ourIntent = new Intent(Menu.this, ourClass); 
    startActivity(ourIntent); 
}catch(ClassNotFoundException e){ 
    e.printStackTrace(); 
} 


} 
@Override 
protected void onPause() { 
    // TODO Auto-generated method stub 
    super.onPause(); 
    song.release(); 
} 

@Override 
protected void onRestart() { 
    // TODO Auto-generated method stub 
    super.onRestart(); 
    song.start(); 
} 

的logcat:-`

04-07 15:44:29.500: E/AndroidRuntime(18816): FATAL EXCEPTION: main 
    04-07 15:44:29.500: E/AndroidRuntime(18816):Process:com.stenstudios.secondapp, PID: 18816 
    04-07 15:44:29.500: E/AndroidRuntime(18816): java.lang.RuntimeException: Unable to resume activity {com.stenstudios.secondapp/com.stenstudios.secondapp.Menu}: java.lang.IllegalStateException 
    04-07 15:44:29.500: E/AndroidRuntime(18816): at android.app.ActivityThread.performResumeActivity(ActivityThread.java:2812) 
    04-07 15:44:29.500: E/AndroidRuntime(18816): at android.app.ActivityThread.handleResumeActivity(ActivityThread.java:2841) 
    04-07 15:44:29.500: E/AndroidRuntime(18816): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1247) 
    04-07 15:44:29.500: E/AndroidRuntime(18816): at android.os.Handler.dispatchMessage(Handler.java:102) 
    04-07 15:44:29.500: E/AndroidRuntime(18816): at android.os.Looper.loop(Looper.java:136) 
    04-07 15:44:29.500: E/AndroidRuntime(18816): at android.app.ActivityThread.main(ActivityThread.java:5146) 
    04-07 15:44:29.500: E/AndroidRuntime(18816): at java.lang.reflect.Method.invokeNative(Native Method) 
    04-07 15:44:29.500: E/AndroidRuntime(18816): at java.lang.reflect.Method.invoke(Method.java:515) 
    04-07 15:44:29.500: E/AndroidRuntime(18816): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:732) 
    04-07 15:44:29.500: E/AndroidRuntime(18816): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:566) 
    04-07 15:44:29.500: E/AndroidRuntime(18816): at dalvik.system.NativeStart.main(Native Method) 
    04-07 15:44:29.500: E/AndroidRuntime(18816): Caused by: java.lang.IllegalStateException 
    04-07 15:44:29.500: E/AndroidRuntime(18816): at android.media.MediaPlayer._start(Native Method) 
    04-07 15:44:29.500: E/AndroidRuntime(18816): at android.media.MediaPlayer.start(MediaPlayer.java:1064) 
    04-07 15:44:29.500: E/AndroidRuntime(18816): at com.stenstudios.secondapp.Menu.onRestart(Menu.java:53) 
    04-07 15:44:29.500: E/AndroidRuntime(18816): at android.app.Instrumentation.callActivityOnRestart(Instrumentation.java:1181) 
    04-07 15:44:29.500: E/AndroidRuntime(18816): at android.app.Activity.performRestart(Activity.java:5291) 
    04-07 15:44:29.500: E/AndroidRuntime(18816): at android.app.Activity.performResume(Activity.java:5302) 
    04-07 15:44:29.500: E/AndroidRuntime(18816): at android.app.ActivityThread.performResumeActivity(ActivityThread.java:2802) 
    04-07 15:44:29.500: E/AndroidRuntime(18816): ... 10 more 
    04-07 15:44:30.992: I/Process(18816): Sending signal. PID: 18816 SIG: 9 

它給了我IllegalStateException.How做我恢復媒體播放器爲用戶導航回菜單。 謝謝。 更新: - 現在我沒有得到error.Error是由於mediaplayer返回null.But重新初始化mediaplayer它仍然不播放歌曲。

回答

1

檢查是否你的MediaPlayer返回null或返回到活動後的... ,如果返回null,那麼你必須先初始化,然後開始......

+0

是它返回null。 –

+0

okkk ...那麼你應該在onResume中而不是在onCreate中初始化和啓動mediaplayer ..... –

+0

它在onResum()初始化後工作。 –