2012-02-06 23 views
1

我們正在創建一個包含兩個主視圖的應用程序:sView和sViewSettings。如果按下Android後退按鈕,我們需要一個if語句來檢查當前視圖是否設置爲sView設置,如果是,則調用sView。獲取當前設置的內容視圖

已經爲後退按鈕設置了一個偵聽器,只需要它調用if語句來檢查當前視圖。

已經嘗試過 如果(this.findViewById(android.R.id.content)== sViewSettings)

在這個任何想法?

感謝您的閱讀, 特拉維斯

+0

特拉維斯來自新波士頓? – wesdfgfgd 2012-02-06 18:15:57

+0

也許這將幫助你 http://stackoverflow.com/questions/3736367/why-isnt-there-a-getcontentview-method-for-activity – alaster 2012-02-06 18:19:29

回答

2

與ID android.R.id.content的觀點是FrameLayout牽着你的內容視圖。試試這個:

ViewGroup contentFrame = (ViewGroup) findViewById(android.R.id.content); 
if (contentFrame.getChild(0) == sViewSettings) { ... } 

不過,我建議稍微不同的方法:使用ViewSwitcher(或任何形式的ViewAnimator)的兩個主要視圖之間翻轉,並隨時跟蹤你的代碼,其中一個是上顯示。

編輯:如果你想保持你的佈局單獨加載,你可以分配一個id(同一個)到每個佈局的根視圖,然後直接使用findViewById檢索內容視圖。

+0

感謝ViewGroup代碼工作得很好,不確定它究竟是如何工作的,但它確實如此。但是現在我有一個新問題。當按下後退按鈕時,視圖會切換,但它會立即關閉應用程序,任何想法如何禁用? – 2012-02-06 20:53:52

+0

@TravisElliott - 這取決於你如何捕捉後退按鈕。參見[this thread](http://stackoverflow.com/questions/7550505/override-android-back-button)和['onBackPressed()']的文檔(http://developer.android.com/reference/ android/app/Activity.html#onBackPressed%28%29)獲取更多信息。 – 2012-02-06 21:25:23