2011-04-18 59 views
2

由於某些原因,每次屏幕方向改變時,如果應用程序打開,我的應用程序會關閉上下文菜單。我看到的所有應用程序在旋轉屏幕後都保持菜單打開,但我無法弄清楚爲什麼我的應用程序正在關閉它們。每當屏幕方向發生變化時,Android選項菜單都會關閉

我沒有處理自己的配置更改,我的onCreate方法(我知道在每次方向更改後調用)都不會觸摸菜單。我希望對此問題有所瞭解。

+0

我不加入這個作爲一個答案,因爲我是一個不自信,如果我是正確的......但我相信你將不得不處理這個狀態並保存它在onSaveInstanceState()調用中被覆蓋。 – Maximus 2011-04-18 16:58:28

+0

我解決了它!我只是忘記從我自己的onSaveInstanceState()方法中調用super.onSaveInstanceState(),所以通常保存的默認狀態信息沒有被保存。 – FernandoPR 2011-04-18 19:41:45

回答

1

的文本菜單默認情況下旋轉時,Android把destroy()方法,然後的onCreate(),但因爲消失:

如果你不希望Android通過正常的活動去破壞,和重新創建過程;相反,您想要自己處理重新創建視圖,您可以在AndroidManifest.xml中的元素上使用android:configChanges屬性。

<activity 
    android:name=".MainActivity" 
    android:launchMode="singleTask" 
    android:configChanges="orientation|keyboardHidden"> 
</activity> 

這種方式contextMenu在手機旋轉時未關閉,因爲onCreate()方法未被調用。

本主題還可以幫助 - Activity restart on rotation Android

+0

我明白摧毀和重建過程。我不明白的是我如何中斷默認行爲。我創建了一個簡單的活動,只有下面的代碼: @Override public void onCreate(Bundle savedInstanceState){ super.onCreate(savedInstanceState); setContentView(R.layout.main); } @Override public boolean onCreateOptionsMenu(Menu menu){ MenuInflater inflater = getMenuInflater(); inflater.inflate(R.layout.menu,menu); 返回true; } 當我運行這個並翻轉方向時,菜單保持打開狀態。 – FernandoPR 2011-04-18 18:52:23

相關問題