未在Activity中调用Android onConfigurationChanged

问题描述

| 我意识到关于此主题还有其他几篇文章,但是这些文章的解决方案对我不起作用。 基本上,我想让我的活动停止在设备方向更改后重新启动。为此,我修改了清单文件中的活动:
        <activity android:name=\".MyActivity\" android:configChanges=\"orientation|keyboardHidden\"></activity>
并且我在“活动”中覆盖了
onConfigurationChanged()
@Override
public void onConfigurationChanged(Configuration newConfig) {
    super.onConfigurationChanged(newConfig);

    System.out.println(\"IN onConfigurationChanged()\");
}
但是,在更改方向后,该活动仍在重新开始,并且未调用
onConfigurationChanged()
方法。 有谁知道为什么会这样?     

解决方法

        您应该使用13 API,并在清单的活动部分中设置以下配置: android:configChanges = \“ orientation | keyboardHidden | screenSize \” 它工作正常。所有Android版本。     ,        将清单更改为关注
<activity android:name=\".MyActivity\" android:configChanges=\"orientation|keyboardHidden|screenSize\"></activity>
并参考此链接以获取详细的说明说明问题     ,        唯一有效的方法是使用getLastNonConfigurationInstance()。 http://developer.android.com/reference/android/app/Activity.html#getLastNonConfigurationInstance()     ,        您不应使用setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);方法可以在应用程序中的任何位置调用,这将避免调用onConfigChanged()方法。     ,        如果您在清单中定义configchanges = orientation,那么该活动将不会重新启动,而是将调用onConfigurationChanged,因为您当前已实现了该活动。首先尝试使用日志类Log记录日志(这是在android中记录事物的正确方法,请勿将System out用于此操作,这被认为是不正确的做法),并且在使用super之前,只有1%的可能性可以解决你怎么了 第二种情况是您将当前活动嵌套在例如tabHost或“活动组”中。如果您的活动具有父活动,则需要在该活动中添加配置更改,然后将在其中进行回调。 如果是这种情况,并且您要转发结果或在子级中也做一些事情,则需要获取对父级中子级的引用,并在其上调用方法以进行更改。     ,        如果您有片段,则还需要:
void setRetainInstance(boolean retain) 
  控制是否有片段   实例在“活动创建”中保留(例如   配置更改)。 我遇到了这个问题,并将其设置为“真”来修复它。     ,        我用了它,它帮助了:
package=\"com.s2dio.evallet\"
android:versionCode=\"1\"
android:versionName=\"1.0\" >

<uses-sdk
android:minSdkVersion=\"8\"
android:targetSdkVersion=\"8\" />
    ,        将您的
onConfigurationChanged
方法修改为以下内容
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();
    }
}
    

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...