2013-07-16 62 views
0

我有一個Android活動與分段。當我的應用程序啓動時,一個列表視圖加載了10個從服務器發送的元素。 (簡單的請求)。Android:如何在方向更改時重新創建Activity?

當我改變我的設備的方向,活動重新創建,我也看到我的請求加載我的列表視圖的微調。

我該如何禁止重新創建活動?

我已經設置了標誌:

android:configChanges="orientation|keyboardHidden|screenSize" 

而且onConfigurationChanged:

public void onConfigurationChanged(Configuration newConfig) { 
    super.onConfigurationChanged(newConfig); 
    mDrawerToggle.onConfigurationChanged(newConfig); 
} 
+0

根據我的知識,如果您使用'android:configChanges =「orientation | keyboardHidden | screenSize」'該視圖不會被重繪。請確保您使用的是正確的活動 –

+0

是的,當我添加此標誌時,當我更改方向時不會重新創建視圖。但顯示不正確。它只佔用屏幕的一部分。 – wawanopoulos

+1

這是因爲您可能需要創建單獨的縱向和橫向佈局,並且在旋轉手機時,請充氣正確的手機。 – Mikel

回答

0

然後你要重寫

@Override 
public void onConfigurationChanged(Configuration newConfig) 
{ 
} 

在你的活動,你想要做什麼方向/ keyboardHidden /屏幕尺寸。

在清單中設置標誌告訴應用程序您想自己處理這些配置更改。

+0

是的,它是我要做的:看到我更新的職位。謝謝 – wawanopoulos

0

您需要重寫onSaveInstanceState(Bundle savedInstanceState)並保持方向更改時所需的所有值的狀態。

@Override 
public void onSaveInstanceState(Bundle savedInstanceState) { 
    super.onSaveInstanceState(savedInstanceState); 
    // This bundle will be passed to onCreate if the process is 
    // killed and restarted. 
    savedInstanceState.putString("jsonArrayString", jsonArrayStrin); 
    // etc. 
} 

該值將被傳遞給onCreate和/或onRestoreInstanceState。您可以檢索這個使用下列內容:

@Override 
public void onRestoreInstanceState(Bundle savedInstanceState) { 
    super.onRestoreInstanceState(savedInstanceState); 
    // This bundle has also been passed to onCreate. 
    String myArrayString = savedInstanceState.getString("jsonArrayString"); 
} 

希望這有助於

0

如果您不需要的方向改變,也可以防止它在清單中。只需在activity元素中指定屬性:android:screenOrientation

相關問題