在Android上旋转活动重启

在Android上旋转活动重启

在我的Android应用程序中,当我旋转设备(滑出键盘)然后我Activity重新启动(onCreate被调用)。现在,这可能是它应该如何,但我在onCreate方法中做了很多初始设置,所以我需要:

  1. 将所有初始设置放在另一个功能中,这样就不会在设备旋转时丢失所有功能

  2. 这样做onCreate不会再次调用,布局只是调整或

  3. 将应用限制为仅限肖像,以便onCreate不调用。


达令说
浏览 469回答 4
4回答

茅侃侃

Android 3.2及更高版本的更新:注意:从Android 3.2(API级别13)开始,当设备在纵向和横向之间切换时,“屏幕大小”也会更改。因此,如果要在开发API级别13或更高级别(由minSdkVersion和targetSdkVersion属性声明)时由于方向更改而阻止运行时重新启动,则必须在"screenSize"值之外包含该"orientation"值。也就是说,你必须申报android:configChanges="orientation|screenSize"。但是,如果您的应用程序的目标是API级别12或更低,那么您的活动始终会自行处理此配置更改(即使在Android 3.2或更高版本的设备上运行,此配置更改也不会重新启动您的活动)。

吃鸡游戏

onCreate()可以尝试检查Bundle savedInstanceState传入事件以查看它是否为空,而不是试图完全阻止被解雇。例如,如果我有一些逻辑应该在Activity真正创建时运行,而不是在每次方向更改时运行,我只在onCreate()该savedInstanceState值为null 时才运行该逻辑。否则,我仍然希望布局正确地重新绘制方向。public void onCreate(Bundle savedInstanceState) {         super.onCreate(savedInstanceState);         setContentView(R.layout.activity_game_list);         if(savedInstanceState == null){             setupCloudMessaging();         }}不确定这是否是最终的答案,但它对我有用。

绝地无双

我做了什么...在清单中,到活动部分,添加:android:configChanges="keyboardHidden|orientation"在活动的代码中,实现了://used in onCreate() and onConfigurationChanged() to set up the UI elementspublic void InitializeUI(){    //get views from ID's    this.textViewHeaderMainMessage = (TextView) this.findViewById(R.id.TextViewHeaderMainMessage);    //etc... hook up click listeners, whatever you need from the Views}//Called when the activity is first created.@Overridepublic void onCreate(Bundle savedInstanceState){    super.onCreate(savedInstanceState);    setContentView(R.layout.main);    InitializeUI();}//this is called when the screen rotates.// (onCreate is no longer called when screen rotates due to manifest, see: android:configChanges)@Overridepublic void onConfigurationChanged(Configuration newConfig){    super.onConfigurationChanged(newConfig);    setContentView(R.layout.main);    InitializeUI();}
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Android
Java