2012-08-31 62 views
0

我只想在設備旋轉時更改佈局。但我發現,onConfigurationChanged()必須調用的onCreate()再次使用的setContentView與分離命名_land.xml的* 佈局使用layout-land和onConfigurationChanged()

if(getActivity().getWindowManager().getDefaultDisplay(). 
getRotation() == Surface.ROTATION_0) 
view = inflater.inflate(R.layout.fragment_layout, null); 
else view = inflater.inflate(R.layout.fragment_layout_land, null); 

工程量太大,有很多代碼來解決。如果再次的onCreate沒有結束()。

我想有人幫助這一點。

謝謝。

- >onConfigurationChanged概念是保持佈局我覺得

+0

你想要什麼?如果你想同時使用你的活動將被重新啓動並且數據將會丟失,你有兩種選擇:1.使用onSavedInstanceState保存數據,或者通過清單修復方向並動態地在onConfigurationChanged()中創建視圖。讓我知道我'我會幫助你的。 –

回答

3

這不是沒有更多interestes

onConfigurationChanged()不能與佈局,土地文件夾的機理使用。這是因爲回調的概念是保持佈局。所以使用該方法的Activity應該膨脹橫向佈局。

0

你並不需要通過自己的呼籲景觀佈局,它會被自動如果按照android文件夾,名爲structure.Like:

假設你的佈局名稱是「main.xml中」,然後

請佈局文件夾一個main.xml中的文件和一個佈局,土地的文件夾。因此在景觀模式下,系統會自動從佈局文件夾中選擇佈局。

檢查this鏈接,如果您有任何疑問。

+0

謝謝你的回答。但它不能正常工作。 AndroidManifest具有方向| screenSize。你在使用onConfigurationChanged方法或刪除screenSize之前所說的工作。* Android API 14,ICS。 – joe

+0

是的......您需要從清單中刪除配置更改... –

0

你只需做佈局,土地文件夾中有同名的佈局文件夾中的main.xml中的res文件夾一個main.xml中(由您不存在默認創建的)。但是要對線性佈局標記進行更改,即使其位於layout-land文件夾中的main.xml的垂直水平座標。

這一切後,你只需撥打SetContentView(R.layout.main);。並看到魔術,你的應用程序將工作。還要對Android Manifest文件進行更改,即在您的活動標記中發表評論android:screenOrientation="portrait"一行。

+0

謝謝您的回答。以下是我所評論的。但這個網站太受歡迎,無法刷新。 :-)。 - >但它工作不正常。 AndroidManifest具有方向| screenSize。你在使用onConfigurationChanged方法或刪除screenSize之前所說的工作。* Android API 14,ICS。 – joe

+0

這使得屏幕禁用旋轉,我認爲。 **我測試過,onConfiguration不支持佈局改變:(** – joe

2

只需調用在該方法的setContentView(R.layout.activity_main)的端部;

public void onConfigurationChanged(Configuration newConfig) { 
    setContentView(R.layout.activity_main); 
} 

所以,你可以使用該文件夾的方法正常

相關問題