java - 获取java.lang.IllegalStateException

标签 java android audio media-player android-mediaplayer

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/

相关文章:

java - 如何将 SOAP 响应与架构相匹配

java - Eclipse:Java 的全文自动完成?

java - 如何将此 Apache 重写规则转换为 Tuckey UrlRewriteFilter 规则?

java - 我们可以在 Java 中重载 main() 方法吗?

Android:SQLiteConstraintException:错误代码 19:约束失败

android - FloatingActionButton 在列表滚动时隐藏

android - 如何在我的 Android 应用程序中使用新的 Google Sans 字体?

audio - ffmpeg 如何将文本/数据文件附加和提取到音频或视频流?

javascript - 数组中音频的未定义错误

iphone - 如何预加载声音?