O aplicativo falha após a orientação da tela ser alterada
Eu tenho o seguinte problema. Após o início, o aplicativo funciona bem - mesmo após alterar a orientação da tela. O aplicativo ainda não está preparado para lidar com a mudança de orientação (por exemplo, layout alternativo e assim por diante); portanto, apenas o layout padrão girado é exibido e está OK. No entanto, quando saio do aplicativo pressionando a tecla Voltar, mude a orientação e imediatamente após iniciar o aplicativo novamente, ele trava. Após uma falha, se eu iniciar o aplicativo mais uma vez, ele funcionará bem até que as circunstâncias descritas anteriormente ocorram - então ele trav
Conectei o dispositivo ao computador e execute o aplicativo no modo de depuração. Após reiniciar, uma exceção é lançada antes mesmo de chamar onCreate. A pilha de chamadas de falha é a seguinte:
Thread [<1> main] (Suspended (exception IllegalArgumentException))
WindowManagerImpl.removeViewImmediate(View) line: 262
Window$LocalWindowManager.removeViewImmediate(View) line: 436
ActivityThread.handleDestroyActivity(IBinder, boolean, int, boolean) line: 4022
ActivityThread.handleRelaunchActivity(ActivityThread$ActivityRecord, int) line: 4127
ActivityThread.access$2400(ActivityThread, ActivityThread$ActivityRecord, int) line: 136
ActivityThread$H.handleMessage(Message) line: 2183
ActivityThread$H(Handler).dispatchMessage(Message) line: 99
Looper.loop() line: 143
ActivityThread.main(String[]) line: 5068
Method.invokeNative(Object, Object[], Class, Class[], Class, int, boolean) line: not available [native method]
Method.invoke(Object, Object...) line: 521
ZygoteInit$MethodAndArgsCaller.run() line: 858
ZygoteInit.main(String[]) line: 616
NativeStart.main(String[]) line: not available [native method]
Eu planejo lidar com a rotação da tela mais tarde, mas até então, desejo que o comportamento padrão funcione corretament
Eu substituí apenas o método da atividade onCreate. Também tenho uma classe de aplicativo personalizada, que cria uma instância da classe de mecanismo usado em todo o aplicativo:
public class ProCalcApplication extends Application
{
private Engine engine;
public ProCalcApplication()
{
super();
engine = new Engine();
}
public Engine getEngine()
{
return engine;
}
}
Como resolver este problema
Eu fiz mais alguns testes. Eu comentei o código inteiro, deixando apenas a implementação padrão do método onCreate (super () + setContentLayout ()). O problema persistiu, então eu comentei todo o XML do layout e o aplicativo finalmente parou de funcionar. Estou em processo de pregar a entrada com defeito, aguarde;)
Encontrei a causa, ainda não há solução. O código XML com defeito é o seguinte:
<LinearLayout android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical">
<android.gesture.GestureOverlayView android:id="@+id/gestureOverlay" android:layout_width="match_parent" android:layout_height="0dp" android:layout_weight="3">
<ViewFlipper android:id="@+id/contextArea" android:layout_width="match_parent" android:layout_height="match_parent">
</ViewFlipper>
</android.gesture.GestureOverlayView>
</LinearLayout>
Alguém pode tentar provar ou refutar que esse código falha nas circunstâncias descritas? Ou aponte, onde eu cometi um erro;)
Meu ambiente: HTC Desire Z (2.2.1), API 8 usada. Versão do Eclipse: Helios Service Release 2 ID da compilação: 20110218-0911.
Edit: Reduza um pouco:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical">
<ViewFlipper android:id="@+id/contextArea" android:layout_width="match_parent" android:layout_height="0dp" android:layout_weight="3">
</ViewFlipper>
</LinearLayout>
E um pouco mais de informação; API 8 no emulador: duas alterações na orientação da tela (Ctrl + F12) e falhas no aplicativo. API 10 no emulador: duas mudanças de orientação da tela e a tela permanece no modo paisagem, independentemente da orientação (embora o aplicativo não trava).
O que eu perdi?