어제 우리 고객 중 Android 4.4.2가 포함 된 Xperia Z1에서 앱이 다운 된 것으로 나타났습니다. avd에서 테스트 한 결과,이 예외가 API 18 이전 버전에서는 발생하지 않는다는 것을 알게되었습니다. 대화 상자가 반환 된 후 응용 프로그램이 충돌하지만 그 이유는 AlertDialog.setView
인 것 같습니다.이 줄을 제거하면 응용 프로그램이 중단되지 않기 때문입니다.AlertDialog API를 생성 한 후 IllegalStateException이 발생했습니다.
나는 웹에서 솔루션을 찾고 다른 접근 방식을 시도했지만 이미 나를 돕는 것을 찾지 못했습니다.
API 19 및 AlertDialog.setView
에 대해 알려진 문제점이 있습니까? 우리가 뭔가 잘못하고있는거야? 누군가이 문제를 해결하는 방법을 알고 있습니까? 사전에
감사
더크
이 내가 함께 대화 상자를 만드는 해요 (간체,하지만 여전히 충돌) 코드 :
AlertDialog alert = null;
AlertDialog.Builder builder = new AlertDialog.Builder(this);
builder.setCancelable(false).setPositiveButton("OK",
new DialogInterface.OnClickListener()
{
...
});
builder.setNeutralButton(
getResources().getString(R.string.text_button_help),
new DialogInterface.OnClickListener()
{
...
});
builder.setView(this.getLayoutInflater().inflate(R.layout.timeline,
null));
alert = builder.create();
return alert;
그리고 로그 캣 출력 :
06-11 06:44:25.710: E/ViewRootImpl(1188): Attempting to destroy the window while drawing!
06-11 06:44:25.710: E/ViewRootImpl(1188): [email protected], title=foo/bar
06-11 06:44:25.820: W/dalvikvm(1188): threadid=1: thread exiting with uncaught exception (group=0xb1a3aba8)
06-11 06:44:25.840: E/AndroidRuntime(1188): FATAL EXCEPTION: main
06-11 06:44:25.840: E/AndroidRuntime(1188): Process: foo, PID: 1188
06-11 06:44:25.840: E/AndroidRuntime(1188): java.lang.IllegalStateException: Surface has already been released.
06-11 06:44:25.840: E/AndroidRuntime(1188): at android.view.Surface.checkNotReleasedLocked(Surface.java:408)
06-11 06:44:25.840: E/AndroidRuntime(1188): at android.view.Surface.unlockCanvasAndPost(Surface.java:261)
06-11 06:44:25.840: E/AndroidRuntime(1188): at android.view.ViewRootImpl.drawSoftware(ViewRootImpl.java:2507)
06-11 06:44:25.840: E/AndroidRuntime(1188): at android.view.ViewRootImpl.draw(ViewRootImpl.java:2409)
06-11 06:44:25.840: E/AndroidRuntime(1188): at android.view.ViewRootImpl.performDraw(ViewRootImpl.java:2253)
06-11 06:44:25.840: E/AndroidRuntime(1188): at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:1883)
06-11 06:44:25.840: E/AndroidRuntime(1188): at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:1000)
06-11 06:44:25.840: E/AndroidRuntime(1188): at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:5670)
06-11 06:44:25.840: E/AndroidRuntime(1188): at android.view.Choreographer$CallbackRecord.run(Choreographer.java:761)
06-11 06:44:25.840: E/AndroidRuntime(1188): at android.view.Choreographer.doCallbacks(Choreographer.java:574)
06-11 06:44:25.840: E/AndroidRuntime(1188): at android.view.Choreographer.doFrame(Choreographer.java:544)
06-11 06:44:25.840: E/AndroidRuntime(1188): at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:747)
06-11 06:44:25.840: E/AndroidRuntime(1188): at android.os.Handler.handleCallback(Handler.java:733)
06-11 06:44:25.840: E/AndroidRuntime(1188): at android.os.Handler.dispatchMessage(Handler.java:95)
06-11 06:44:25.840: E/AndroidRuntime(1188): at android.os.Looper.loop(Looper.java:136)
06-11 06:44:25.840: E/AndroidRuntime(1188): at android.app.ActivityThread.main(ActivityThread.java:5017)
06-11 06:44:25.840: E/AndroidRuntime(1188): at java.lang.reflect.Method.invokeNative(Native Method)
06-11 06:44:25.840: E/AndroidRuntime(1188): at java.lang.reflect.Method.invoke(Method.java:515)
06-11 06:44:25.840: E/AndroidRuntime(1188): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:779)
06-11 06:44:25.840: E/AndroidRuntime(1188): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:595)
06-11 06:44:25.840: E/AndroidRuntime(1188): at dalvik.system.NativeStart.main(Native Method)
안녕하세요, 로그 상태에서 로그 상태를 보셨습니다. ava.lang.IllegalStateException : 표면이 이미 해제되었습니다. 방문하시기 바랍니다, 그것은 당신을 도울 수 있기를 바랍니다 http://stackoverflow.com/questions/20665636/livewallpaper-java-lang-illegalstateexception-surface-has-already-been-release –
덕분에, 나는 이미이 질문을 보았습니다. 나는 그것이 내 사건에 유용하다고 생각하지 않는다. 대화 상자는 'AsyncTasks'를 만들지 않으며 사용자가 버튼을 누를 때까지 해제되지 않습니다 (대화 상자가 표시되기 전에 앱이 중단되기 때문에 대화 할 수 없습니다). – user3729551