【问题标题】:Rotation of screen crashes android app [duplicate]屏幕旋转使android应用程序崩溃[重复]
【发布时间】:2013-05-28 08:59:28
【问题描述】:

我是安卓开发新手。我开发了一个应用程序,现在的问题是,每当我旋转屏幕时,应用程序都会再次启动活动,然后它的应用程序会崩溃。 我在谷歌上找到了一些使用 android:configChanges="orientation" 的解决方案。它工作正常,但是当我旋转屏幕时,它的屏幕大小不会改变。 如何解决这个问题?

日志:

05-28 14:32:52.038:E/AndroidRuntime(276):致命异常:主要 05-28 14:32:52.038: E/AndroidRuntime(276): java.lang.IllegalArgumentException: 视图未附加到窗口管理器 05-28 14:32:52.038: E/AndroidRuntime(276): 在 android.view.WindowManagerImpl.findViewLocked(WindowManagerImpl.java:355) 05-28 14:32:52.038: E/AndroidRuntime(276): 在 android.view.WindowManagerImpl.removeView(WindowManagerImpl.java:200) 05-28 14:32:52.038: E/AndroidRuntime(276): 在 android.view.Window$LocalWindowManager.removeView(Window.java:432) 05-28 14:32:52.038: E/AndroidRuntime(276): 在 android.app.Dialog.dismissDialog(Dialog.java:278) 05-28 14:32:52.038: E/AndroidRuntime(276): 在 android.app.Dialog.access$000(Dialog.java:71) 05-28 14:32:52.038: E/AndroidRuntime(276): 在 android.app.Dialog$1.run(Dialog.java:111) 05-28 14:32:52.038: E/AndroidRuntime(276): 在 android.app.Dialog.dismiss(Dialog.java:268) 05-28 14:32:52.038: E/AndroidRuntime(276): 在 android.app.Dialog.cancel(Dialog.java:951) 05-28 14:32:52.038: E/AndroidRuntime(276): 在 com.MobileWeb.mytestbuddy.PremiumMain$TheTask.onPostExecute(PremiumMain.java:373) 05-28 14:32:52.038: E/AndroidRuntime(276): at com.MobileWeb.mytestbuddy.PremiumMain$TheTask.onPostExecute(PremiumMain.java:1) 05-28 14:32:52.038: E/AndroidRuntime(276): 在 android.os.AsyncTask.finish(AsyncTask.java:417) 05-28 14:32:52.038: E/AndroidRuntime(276): 在 android.os.AsyncTask.access$300(AsyncTask.java:127) 05-28 14:32:52.038: E/AndroidRuntime(276): 在 android.os.AsyncTask$InternalHandler.handleMessage(AsyncTask.java:429) 05-28 14:32:52.038: E/AndroidRuntime(276): 在 android.os.Handler.dispatchMessage(Handler.java:99) 05-28 14:32:52.038: E/AndroidRuntime(276): 在 android.os.Looper.loop(Looper.java:123) 05-28 14:32:52.038: E/AndroidRuntime(276): 在 android.app.ActivityThread.main(ActivityThread.java:4627) 05-28 14:32:52.038: E/AndroidRuntime(276): 在 java.lang.reflect.Method.invokeNative(Native Method) 05-28 14:32:52.038: E/AndroidRuntime(276): 在 java.lang.reflect.Method.invoke(Method.java:521) 05-28 14:32:52.038: E/AndroidRuntime(276): 在 com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868) 05-28 14:32:52.038: E/AndroidRuntime(276): 在 com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626) 05-28 14:32:52.038: E/AndroidRuntime(276): at dalvik.system.NativeStart.main(Native Method)

【问题讨论】:

  • 你必须从你的应用程序中删除错误...
  • 但它工作正常。我应该检查什么?
  • 如果没有更多细节和一些源代码就无法回答
  • java.lang.IllegalArgumentException: 视图未附加到窗口管理器
  • 我不知道为什么人们这么有兴趣投反对票???你可以发展得很好,但这并不意味着你对初学者也这样做。

标签: android android-configchanges


【解决方案1】:

您可以通过在应用程序的清单文件中添加以下内容来避免重新创建活动。

android:configChanges="orientation|keyboardHidden|screenSize"

如下

      <activity
        android:name=".your activity"
        android:configChanges="orientation|keyboardHidden|screenSize"
        android:label="@string/app_name" >
    </activity>

【讨论】:

  • 但是当我将屏幕从正常旋转到纵向时,它的屏幕尺寸不会改变。该怎么办???
  • 您是否将上述行添加到清单中的活动标签?
  • 等等,让我看看我的设计部分。我认为它会解决我的问题。谢谢。
  • 我不知道为什么人们这么有兴趣投反对票???你可以发展得很好,但这并不意味着你对初学者也这样做。
  • 这个解决方案对我有用。随着屏幕的旋转,布局也正确更改。我知道这是一个旧答案,但是当你把它放在清单中时是否有特殊的权衡?为什么您不想每次都为每个活动都这样做?
【解决方案2】:

你的问题太模糊了。我只能说你需要检查你的日志猫并阅读一下,看看你的应用程序为什么会崩溃。

我建议快速阅读 android:configChanges from here.希望对你有帮助。

【讨论】:

  • 对话框出现错误。代码是: if (dialog != null) { if (dialog.isShowing()) { dialog.cancel(); } }
  • 那么为什么在使用方向时它会起作用?
  • 我不知道为什么人们这么有兴趣投反对票???你可以发展得很好,但这并不意味着你对初学者也这样做。
  • 忽略它们。 =) 我认为“kaluwila”已经给了你一个你应该做什么的答案。我发布的链接告诉您:“注意:如果您的应用程序针对 API 级别 13 或更高级别(由 minSdkVersion 和 targetSdkVersion 属性声明),那么您还应该声明“screenSize”配置,因为它也会在设备在纵向和横向之间切换。”
  • 是的,mazin Al-Bahrni。它在实际设备中运行良好。那为什么它在模拟器中给出概率?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-02-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-08-16
  • 1970-01-01
相关资源
最近更新 更多