在Activity A
中,我正在播放一首歌,现在再次移到此处Activity B
,以播放另一首歌曲的按钮
现在,我必须在 Activity B上检查是否Activity A's
歌曲already playing
我必须向用户显示已在 Activity A上播放歌曲的消息,如果用户未在 Activity A上播放歌曲,则用户可以开始在Activity B
中播放歌曲
ActivityB.java:-
btnPlay.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View arg0) {
// TODO Auto-generated method stub
if(ActivityA.mPlayer!=null && ActivityA.mPlayer.isPlaying()) // getting exception
{
Toast.makeText(Activity.this, "Already playing song on Activity A", Toast.LENGTH_LONG).show();
}
else
{
mediaPlayer.start();
btnPlay.setVisibility(View.GONE);
btnPause.setVisibility(View.VISIBLE);
}
}
});
现在,当我使用
getting
进行Exception
编码时:就像我已经在Activity playing song
中启动A
一样,现在移到Activity B
了,这里是tapped on play
按钮-它的显示 me消息"Already playing song on Activity A"
,然后我决定返回 Activity A并暂停了我现在我不在 Activity A中播放歌曲,然后再次移至 Activity B(在这里,当我确实点击Play
按钮获取IllegalStateException
时)在此行:if(ActivityA.mPlayer!=null && ActivityA.mPlayer.isPlaying())
**`Logcat:`**
11-01 12:39:38.860: E/AndroidRuntime(7101): FATAL EXCEPTION: main
11-01 12:39:38.860: E/AndroidRuntime(7101): Process: com.example.audio, PID: 7101
11-01 12:39:38.860: E/AndroidRuntime(7101): java.lang.IllegalStateException
11-01 12:39:38.860: E/AndroidRuntime(7101): at android.media.MediaPlayer.isPlaying(Native Method)
11-01 12:39:38.860: E/AndroidRuntime(7101): at com.example.audio.ActivityB$1.onClick(ActivityB.java:43)
11-01 12:39:38.860: E/AndroidRuntime(7101): at android.view.View.performClick(View.java:4438)
11-01 12:39:38.860: E/AndroidRuntime(7101): at android.view.View$PerformClick.run(View.java:18431)
11-01 12:39:38.860: E/AndroidRuntime(7101): at android.os.Handler.handleCallback(Handler.java:733)
11-01 12:39:38.860: E/AndroidRuntime(7101): at android.os.Handler.dispatchMessage(Handler.java:95)
11-01 12:39:38.860: E/AndroidRuntime(7101): at android.os.Looper.loop(Looper.java:149)
11-01 12:39:38.860: E/AndroidRuntime(7101): at android.app.ActivityThread.main(ActivityThread.java:5061)
11-01 12:39:38.860: E/AndroidRuntime(7101): at java.lang.reflect.Method.invokeNative(Native Method)
11-01 12:39:38.860: E/AndroidRuntime(7101): at java.lang.reflect.Method.invoke(Method.java:515)
11-01 12:39:38.860: E/AndroidRuntime(7101): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:787)
11-01 12:39:38.860: E/AndroidRuntime(7101): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:603)
11-01 12:39:38.860: E/AndroidRuntime(7101): at dalvik.system.NativeStart.main(Native Method)
最佳答案
我认为最好在ActivityA
中这样做:
Intent i = new Intent(this, ActivityB.class);
i.putExtra("isPlaying", mPlayer.isPlaying);
startActivity(i);
并在
ActivityB's
onCreate
中:Bundle data = getIntent().getExtras();
if(data != null)
{
isPlayingBefore = data.getParcelable("isPlaying");
}
在您的
onClick
上:@Override
public void onClick(View arg0) {
// TODO Auto-generated method stub
if(isPlayingBefore)
{
Toast.makeText(Activity.this, "Already playing song on Activity A", Toast.LENGTH_LONG).show();
}
else
{
mediaPlayer.start();
btnPlay.setVisibility(View.GONE);
btnPause.setVisibility(View.VISIBLE);
}
}
关于java - 获取java.lang.IllegalStateException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26687067/