为了账号安全,请及时绑定邮箱和手机立即绑定

在Android上旋转活动重启

在Android上旋转活动重启

达令说 2019-05-27 16:34:54
在Android上旋转活动重启在我的Android应用程序中,当我旋转设备(滑出键盘)然后我Activity重新启动(onCreate被调用)。现在,这可能是它应该如何,但我在onCreate方法中做了很多初始设置,所以我需要:将所有初始设置放在另一个功能中,这样就不会在设备旋转时丢失所有功能这样做onCreate不会再次调用,布局只是调整或将应用限制为仅限肖像,以便onCreate不调用。
查看完整描述

4 回答

?
茅侃侃

TA贡献1842条经验 获得超21个赞

Android 3.2及更高版本的更新:

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


查看完整回答
反对 回复 2019-05-27
?
吃鸡游戏

TA贡献1829条经验 获得超7个赞

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();
        }}

不确定这是否是最终的答案,但它对我有用。


查看完整回答
反对 回复 2019-05-27
?
绝地无双

TA贡献1946条经验 获得超4个赞

我做了什么...


在清单中,到活动部分,添加:


android:configChanges="keyboardHidden|orientation"

在活动的代码中,实现了:


//used in onCreate() and onConfigurationChanged() to set up the UI elements

public 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.

@Override

public 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)

@Override

public void onConfigurationChanged(Configuration newConfig)

{

    super.onConfigurationChanged(newConfig);

    setContentView(R.layout.main);


    InitializeUI();

}


查看完整回答
反对 回复 2019-05-27
  • 4 回答
  • 0 关注
  • 468 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信