2011-08-24 155 views
0

我想根據複選框首選項顯示相對佈局。現在,無論複選框處於何種狀態,佈局都消失了。爲什麼我的setVisibility視圖不能正確顯示?

final RelativeLayout unreadCount = (RelativeLayout) findViewById(R.id.header_navigation); 
      if(_preferences.getBoolean(UNREAD_COUNT_ENABLED_KEY, false)){ 
       unreadCount.setVisibility(View.VISIBLE); 
      }else{ 
       if(_preferences.getBoolean(UNREAD_COUNT_ENABLED_KEY, true)){ 
       unreadCount.setVisibility(View.GONE); 
      } 
     } 

<RelativeLayout 
    android:id="@+id/header_navigation" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:gravity="center" 
    android:padding="2dp"> 
    <Button 
     android:id="@+id/previous_button" 
     android:layout_height="wrap_content" 
     android:layout_width="wrap_content" 
     android:layout_alignParentLeft="true" 
     android:layout_alignParentTop="true" 
     android:hapticFeedbackEnabled="true" 
     android:background="@drawable/btn_prev_arrow" /> 
    <TextView 
     android:id="@+id/notification_count_text_view" 
     android:layout_height="50dip" 
     android:layout_width="wrap_content" 
     android:layout_alignParentTop="true" 
     android:layout_toRightOf="@+id/previous_button" 
     android:layout_toLeftOf="@+id/next_button" 
     android:gravity="center" 
     android:focusable="true" 
     android:clickable="true" 
     android:textAppearance="?android:attr/textAppearanceMedium" 
     android:textColor="@color/white" 
     android:text="0/0"/> 
    <Button 
     android:id="@+id/next_button" 
     android:layout_height="wrap_content" 
     android:layout_width="wrap_content" 
     android:layout_alignParentRight="true" 
     android:layout_alignParentTop="true" 
     android:hapticFeedbackEnabled="true" 
     android:background="@drawable/btn_next_arrow"/> 
</RelativeLayout> 
+1

您是否已將代碼放入調試中以確保它完全進入if語句?另外,在XML中設置的可見性屬性是什麼? – hooked82

+0

@ hooked82我的if語句正在工作,並且我嘗試在我的佈局中將可見性屬性設置爲「可見」,但沒有任何更改。 – adneal

回答

2

您的代碼有缺陷 - 無論複選框狀態如何,unreadCount.setVisibility(View.GONE);行都不會運行。如果選中該複選框,則會運行if語句的開始部分。如果未選中,則第二個嵌套if將跳過該行。你需要拿出第二個嵌套if:

final RelativeLayout unreadCount = (RelativeLayout) findViewById(R.id.header_navigation); 

if(_preferences.getBoolean(UNREAD_COUNT_ENABLED_KEY, false)){ 
    unreadCount.setVisibility(View.VISIBLE); 
}else{ 
    unreadCount.setVisibility(View.GONE); 
} 

除了這個片段中,有可能是在佈局一個缺陷,導致不被顯示的視圖。嘗試使用任何條件語句之外的setVisibility(View.VISIBLE)行來測試它是否顯示,然後我會檢查您的佈局或將其發佈到此處。

+0

我嘗試在相對佈局的支架下添加「android:visibility =」visible「,並且沒有任何更改。如果我完全刪除View.GONE佈局顯示,所以我不知道我的問題在哪裏 – adneal

+0

是否有其他設置您的視圖的可見性,還是您發佈的代碼與您擁有的代碼不同?不管您對View.GONE行做什麼,因爲該行永遠不會運行。如果您更新了以上代碼,那麼它必須意味着對'UNREAD_COUNT_ENABLED_KEY'的偏好不被選中,'UNREAD_COUNT_ENABLED_KEY'使用的是錯誤的鍵,或者該偏好不是複選框的首選項 –

+0

我想通了,我沒有添加我的相對佈局作爲屬性。 – adneal

相關問題