Xamarin Android可能的ScreenOrientation.Landscape错误

时间:2017-02-17 09:07:56

标签: c# android visual-studio xamarin

我的应用程序有一些奇怪的行为,所以我重新创建了应用程序,直到它发出错误并发现ScreenOrientation.Landscape是罪魁祸首。

如果您在visual studio 15中创建一个新的空白应用程序并将MainActivity替换为:

[Activity(Label = "TestLandscapeBug", MainLauncher = true, Icon = "@drawable/icon",
    ScreenOrientation = ScreenOrientation.Landscape)]
public class MainActivity : Activity
{
protected override void OnCreate(Bundle bundle)
{
    System.Console.WriteLine("OnCreate");
    base.OnCreate(bundle);

    SetContentView(Resource.Layout.Main);
}
protected override void OnDestroy()
{
    System.Console.WriteLine("OnDestroy");
    base.OnDestroy();
}
protected override void OnPause()
{
    System.Console.WriteLine("OnPause");
    base.OnPause();
}
protected override void OnRestart()
{
    System.Console.WriteLine("OnRestart");
    base.OnRestart();
}
protected override void OnResume()
{
    System.Console.WriteLine("OnResume");
    base.OnResume();
}
protected override void OnStart()
{
    System.Console.WriteLine("OnStart");
    base.OnStart();
}

protected override void OnStop()
{
    System.Console.WriteLine("OnStop");
    base.OnStop();
}

}

运行应用程序并按下睡眠按钮: 调用OnPause,OnStop,OnDestroy,OnCreate,OnStart,OnResume和OnPause。

如果你删除ScreenOrientation = ScreenOrientation.Landscape OnPause和OnStop被调用。

这是一个错误吗?或者我做错了什么? 我该如何解决这个问题,或者使用其他方法将屏幕锁定在风景中。

1 个答案:

答案 0 :(得分:1)

当屏幕锁定时,活动切换到纵向模式是正常的。每当方向改变时,都会调用OnDestroy,然后调用OnCreate。所以,没有什么可担心的,因为你所看到的是Android的默认行为。

纵向是锁屏的默认方向,因此在锁定时您的活动也会切换到该方向。