如何避免Android上的方向更改时重新启动活动
我正在创build一个Android应用程序,在该应用程序中,我正在canvas上绘制一个视图。 当设备的方向改变时,活动重新开始。 我不想要它。
如何避免在方向更改时重新启动活动?
有不同的方式来做到这一点,但在这里给出,使用
android:configChanges="keyboardHidden|orientation|screenSize"
如果您需要,可以让您监听configuration更改。 然后通过覆盖onConfigurationChanged
并调用setContentView
来响应这些更改。
这是我一直在做的方式,但我有兴趣了解其他人的想法。
在AndroidManifest.xml中定义您的活动,如下所示:
<activity android:name="com.name.SampleActivity" android:configChanges="keyboardHidden|orientation|screenSize" android:icon="@drawable/sample_icon" android:label="@string/sample_title" android:screenOrientation="portrait" > </activity>
检查你的Android清单文件,你已经写了android:configChanges="orientation"
的活动..
我会build议使用碎片。 你可以简单地使用setRetainInstance(true)
来通知你想保留你的片段。
将android:configChanges="keyboardHidden|orientation"
到您的activity
对于Xamarin用户,
要避免应用程序在Android中更改方向,请添加
ConfigurationChanges = Android.Content.PM.ConfigChanges.Orientation | Android.Content.PM.ConfigChanges.ScreenSize
所有Activity类的ConfigurationChanges = Android.Content.PM.ConfigChanges.Orientation | Android.Content.PM.ConfigChanges.ScreenSize
属性。 例如,下面是我的演示代码
[Activity(Label = "DemoApp", ConfigurationChanges = Android.Content.PM.ConfigChanges.Orientation | Android.Content.PM.ConfigChanges.ScreenSize)] public class MainActivity : global::Xamarin.Forms.Platform.Android.FormsApplicationActivity { protected override void OnCreate(Bundle bundle) { //Some code here } }
为避免重新启动keyboardHidden|orientation
– 如何禁用Android中的方向更改?
请遵循Android API指南 – 处理运行时更改
使用应用程序类 – Activity在Android上重新启动
将其添加到清单中的所有活动中。
android:configChanges="orientation|screenSize"
例:
<activity android:name=".activity.ViewActivity" android:label="@string/app_name" android:configChanges="orientation|screenSize"/>
我尝试在activity标签中写入android:configChanges="keyboardHidden|orientation|screenSize"
,但是不起作用。
我尝试了很多方法,没有任何工作,直到我为所有的应用程序活动添加android:configChanges="keyboardHidden|orientation|screenSize"
并且它完美地工作。
只需为清单文件中的所有应用程序活动添加android:configChanges =“keyboardHidden | orientation | screenSize”即可