【问题标题】:MonoDroid OnConfigurationChanged Not FiringMonoDroid OnConfigurationChanged 未触发
【发布时间】:2012-02-29 05:52:53
【问题描述】:

我已经看到了有关该主题的许多其他问题,但到目前为止,没有一个答案可以解决我的问题。我基本上只是不希望每次屏幕重新定向时都重新创建我的活动。根据我的发现,以下应该可以工作:

清单文件

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android" android:installLocation="internalOnly" android:versionCode="1">
  <application android:label="Service Portal">
    <activity android:name =".CallManagement" android:configChanges="orientation"></activity>
  </application>  
  <uses-sdk android:minSdkVersion="10" />
  <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
</manifest>

CallManagement.cs

public override void OnConfigurationChanged(Android.Content.Res.Configuration newConfig)
    {
        base.OnConfigurationChanged(newConfig);
    }

我尝试将 android:configChanges 更改为“orientation|keyboardHidden”。由于我的目标是 API 级别 10,因此我多次看到的同时包含“screenSize”的建议并不适用。

我在 OnConfigurationChanged void 中放置了一个断点,它永远不会捕获,而且 OnCreate 肯定会继续运行。我做错了什么或者我误解了这个功能应该做什么?

【问题讨论】:

    标签: android xamarin.android


    【解决方案1】:

    您是否尝试过以特定方向锁定屏幕?

    <activity android:name="MyActivity" android:screenOrientation="landscape">.
    

    我以编程方式锁定屏幕,但我发现布局不如请求方向,然后使用提供的 int 锁定方向。

    如果您不想锁定屏幕,但希望活动在方向更改时正确调整大小,您可能会重新考虑您的设计。保存游戏状态然后允许 android 重新创建 Activity 被认为是动态屏幕的最佳实践。

    【讨论】:

    • 我绝对不想锁定屏幕方向。用户需要能够以最舒适的方向与应用程序交互。我遇到的最大问题是对话框和动态微调器。在 OnCreate 中,微调器被赋予一个 ArrayAdapter,其选项会根据其他因素而变化。如果我选择位置 1 中的项目并重新定向,则在 OnCreate 中它会根据 OnCreate 期间的新情况构建选项列表,现在位置 1 中的内容已不再存在。
    • 那么 - 您能否根据一些唯一的选项 ID(名称或哈希)保存选择,然后在创建时选择与您保存的值匹配的任何对象?我非常同意您的观点,即在屏幕更改上几乎无法控制应用程序,但同样,它意味着“功能”而不是错误。
    • 并非如此。当变成纵向并且 ArrayAdapter 在 onCreate 中重建时,在横向中选择的项目甚至可能不是微调器中的选项。微调器中的选项旨在控制工作流程,因此根据用户当前的位置,选项会发生变化。一旦在微调器中选择了项目,我就有用户的选择。我想我总是可以强制微调器在重新定向时选择一个通用的“选择”项目。但这对对话问题没有帮助?
    猜你喜欢
    • 2018-03-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-09-21
    • 2013-05-18
    • 1970-01-01
    相关资源
    最近更新 更多