06-27 15:35:26.598: E/AndroidRuntime(18210): FATAL EXCEPTION: main
06-27 15:35:26.598: E/AndroidRuntime(18210): Process: com.radioplymouth.RadioPlymouth, PID: 18210
06-27 15:35:26.598: E/AndroidRuntime(18210): android.view.WindowManager$BadTokenException: Unable to add window -- token android.os.BinderProxy@41bf7a90 is not valid; is your activity running?
06-27 15:35:26.598: E/AndroidRuntime(18210): at android.view.ViewRootImpl.setView(ViewRootImpl.java:597)
06-27 15:35:26.598: E/AndroidRuntime(18210): at android.view.WindowManagerGlobal.addView(WindowManagerGlobal.java:259)
06-27 15:35:26.598: E/AndroidRuntime(18210): at android.view.WindowManagerImpl.addView(WindowManagerImpl.java:94)
06-27 15:35:26.598: E/AndroidRuntime(18210): at android.app.Dialog.show(Dialog.java:291)
06-27 15:35:26.598: E/AndroidRuntime(18210): at com.radioplymouth.RadioPlymouth.MainActivity$1.onReceive(MainActivity.java:132)
06-27 15:35:26.598: E/AndroidRuntime(18210): at android.support.v4.content.LocalBroadcastManager.executePendingBroadcasts(LocalBroadcastManager.java:297)
06-27 15:35:26.598: E/AndroidRuntime(18210): at android.support.v4.content.LocalBroadcastManager.access$000(LocalBroadcastManager.java:46)
06-27 15:35:26.598: E/AndroidRuntime(18210): at android.support.v4.content.LocalBroadcastManager$1.handleMessage(LocalBroadcastManager.java:116)
06-27 15:35:26.598: E/AndroidRuntime(18210): at android.os.Handler.dispatchMessage(Handler.java:102)
06-27 15:35:26.598: E/AndroidRuntime(18210): at android.os.Looper.loop(Looper.java:157)
06-27 15:35:26.598: E/AndroidRuntime(18210): at android.app.ActivityThread.main(ActivityThread.java:5872)
06-27 15:35:26.598: E/AndroidRuntime(18210): at java.lang.reflect.Method.invokeNative(Native Method)
06-27 15:35:26.598: E/AndroidRuntime(18210): at java.lang.reflect.Method.invoke(Method.java:515)
06-27 15:35:26.598: E/AndroidRuntime(18210): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1069)
06-27 15:35:26.598: E/AndroidRuntime(18210): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:885)
06-27 15:35:26.598: E/AndroidRuntime(18210): at dalvik.system.NativeStart.main(Native Method)
进度对话框是MainActivity上广播接收器中的.show()。媒体播放器服务发送与主要
上的接收者相关的广播,加载,完成或错误BroadcastReceiver LoadingReceiver = new BroadcastReceiver(){
@SuppressLint("NewApi")
@Override
public void onReceive(Context arg0, Intent arg1) {
progress = new ProgressDialog(MainActivity.this);
progress.setTitle("Loading");
progress.setMessage("Loading RadioPlymouth...");
progress.show(); //error here
Player.setImageResource(R.drawable.stop);
}
};
首次打开应用程序时(首次创建MainActivity),它可以100%正常运行,没有任何问题。但是,当我改变活动时,&尝试再次启动该服务,抛出此错误。从对此错误的研究来看,大多数推理都是错误拼写或传递错误的上下文,而不是activityContext.this(如上所示)。
如果我退出活动,我有时可以让它重新开始工作,但大多数时候我必须强制停止或重新安装
更新:
@Override
protected void onPause(){
super.onPause();
progress.dismiss();
}
我将此方法包含在我的MainActivity中,但问题仍然存在。 (我使用if与.isShowing())
尝试了.cancel()的变体某处某事严重错误。删除onPause覆盖后,我可以很好地移动活动,但是在返回MainActivity之后,加载服务/进度对话框会导致崩溃,因为原始行会导致它(反之亦然)。我的一部分知道,如果我从我的项目中排除整个progressdialog部分,它将运行得很好,但我需要有一些形式的加载视觉通知。
参考jitain-sharma的评论;在广播接收器中,进度对话框被定义为新的。肯定这会解决令牌的任何问题,因为在调用进度对话框之前用户必须在mainactivity窗口上?
:
我发现在progress.show()
内调用if(!isFinishing())
解决了这个问题。
答案 0 :(得分:0)
问题是<ENVLOPE>
</ENVLOPE>
当另一个活动类正在运行时,您正在使用MainActivity MainActivity.this
。