Android配置已更改

lom*_*mza 1 configuration android rotation

我想知道旋转Android设备时(即更改配置时)会覆盖哪些方法?

onSaveInstanceState(...),onConfigurationChanged(...),onRestoreInstanceState(...)-类似这样的东西吗?

对于我来说,聆听与更改配置有关的整个过程也将很有趣。谢谢。

Lal*_*ani 5

当您旋转设备时,您的 Activity 将重新创建并且所有变量都将重新初始化。因此,在这种情况下,如果您希望某些值在 Rotation 上保持不变,您也可以使用 the 存储它们的状态,onSaveInstanceState()并且您可以onCreate()通过检查 Bundle is not null 再次恢复。

if(savedInstanceState != null){
            // get the restore value from the Bundle
        }
Run Code Online (Sandbox Code Playgroud)

作为在哪里onConfigurationChanged(),当你旋转设备(将被调用。注意,这只会叫,如果你选择的配置,你想与处理configChanges属性,在清单)。从参数中,您将获得新的设备配置。

如果您不希望在设备旋转时重新创建您的活动,那么您必须将此行添加到AndroidManifest文件中的活动标签中。

android:ConfigChanges="keyboardHidden|orientation"
Run Code Online (Sandbox Code Playgroud)


小智 5

根据android开发人员参考,您必须使用:

@Override
public void onConfigurationChanged(Configuration newConfig) {
    super.onConfigurationChanged(newConfig);

    // Checks the orientation of the screen
    if (newConfig.orientation == Configuration.ORIENTATION_LANDSCAPE) {
        Toast.makeText(this, "landscape", Toast.LENGTH_SHORT).show();
    } else if (newConfig.orientation == Configuration.ORIENTATION_PORTRAIT){
        Toast.makeText(this, "portrait", Toast.LENGTH_SHORT).show();
    }
}
Run Code Online (Sandbox Code Playgroud)

有关更多信息,请参见:http : //developer.android.com/guide/topics/resources/runtime-changes.html#HandlingTheChange

您可能会对以下内容感兴趣:http : //developer.android.com/guide/topics/manifest/activity-element.html#config

在这里您可以找到所有可以监听的配置监听器。

请记住将它们放在android清单中:

<activity 
   android:configChanges=["orientation"]
   . . .
</activity>
Run Code Online (Sandbox Code Playgroud)

希望这可以帮助...