2013-02-28 219 views
4

我在我的應用程序中遇到了一個奇怪的問題。主要問題,我問了here。問題是android:configChanges="keyboardHidden|orientation"不能在我的代碼中工作。onConfigurationChanged()在調整方向時調用兩次Landscape到Portrait

所以我找到了解決方案,通過我的代碼中的@Override onConfigurationChanged()方法來管理方向。但尚未解決問題。

當前問題是調用兩次,當我們改變方向 風景畫像。

如果我們換手機縱向到橫向的變化和工作,但現在當用戶移動電話風景人像,然後將調用和第二回程相同方向的狀態&調用它會返回畫像。

代碼:

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

     if (newConfig.orientation == Configuration.ORIENTATION_LANDSCAPE) 
     { 
      Log.e("On Config Change", "LANDSCAPE"); 

      Toast.makeText(getApplicationContext(), "L", Toast.LENGTH_LONG) 
        .show(); 
     } else 
     { 
      Log.e("On Config Change", "PORTRAIT"); 
      Toast.makeText(getApplicationContext(), "P", Toast.LENGTH_LONG) 
        .show(); 
     } 
    } 

登錄

first mode its port mode , so change in land mode 

02-28 12:10:06.274: E/On Config Change(540): LANDSCAPE 
02-28 12:10:14.154: E/On Config Change(540): LANDSCAPE 
// here after changed the land mode try to chage in port mode then its calling two times as you can see as per the log 
02-28 12:10:14.593: E/On Config Change(540): PORTRAIT 
02-28 12:11:39.524: E/On Config Change(540): LANDSCAPE 

有同樣的問題,還有一個查詢>>

當我們改變方向這會殺了當前活動(在致電時)。所以我有兩個佈局在不同的文件夾根據我以前的問題。所以當我改變屏幕活動將刪除所有data.so我怎麼能保存該數據顯示用戶,當用戶在任何情況下改變手機的方向。

+0

你有沒有找到任何解決方案?今天剛剛觀察到同樣的事情! – 2014-12-01 13:25:09

回答

0

我不確定被調用了兩次,但爲了避免應用程序出現錯誤行爲,如果現在接收的方向與先前的方向相同,則可以使的執行無效。 爲我工作,希望它也適用於你:)

+0

android:configChanges =「keyboardHidden | orientation | screenSize」 onConfigurationChanged()用不同的參數調用兩次,一次用於方向,一次用一些screenSize參數在我們的例子中。您可以通過在日誌中打印配置參數來檢查爲什麼onConfigurationChanged被調用兩次。 – 2017-04-20 11:22:15