簡體   English   中英

為什么不調用onConfigurationChanged?

[英]Why isn't onConfigurationChanged being called?

我正在編寫一個代碼,當方向更改時更改TextView的文本我正在使用onConfigurationChanged()偵聽器來更改文本

override fun onConfigurationChanged(newConfig: Configuration?) {
    super.onConfigurationChanged(newConfig)

    val orientation : Int = getResources().getConfiguration().orientation
    val oTag = "Orientation Change"

    if(orientation == (Configuration.ORIENTATION_LANDSCAPE)){
        mytext?.setText("Changed to Landscape")
        Log.i(oTag, "Orientation Changed to Landscape")

    }else if (orientation == (Configuration.ORIENTATION_PORTRAIT)){
        mytext?.setText("Changed to Portratit")
        Log.i(oTag, "Orientation Changed to Portratit")
    }else{
        Log.i(oTag, "Nothing is coming!!")
    }
}

但即使在日志中也沒有任何反應

我也將此屬性添加到清單文件中的Activity

android:configChanges="orientation"

我在這里錯過了什么? 還有其他方法來實現這一目標嗎?

使用此代碼獲取confi chage

override fun onConfigurationChanged(newConfig: Configuration?) {
        super.onConfigurationChanged(newConfig)
        if (newConfig != null) {
            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();
            }
        }
    }

有幾件事要嘗試:

android:configChanges="orientation|keyboardHidden|screenSize"而不是android:configChanges="orientation"

確保您沒有調用setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT); 任何地方。 這將導致onConfigurationChange()不會觸發。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM