adneal
adneal

Reputation: 30814

Why won't my setVisibility View display correctly?

I'm trying display a Relative Layout based on a checkbox preference. Right now, no matter what state the checkbox is in, the layout is gone.

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>

Upvotes: 0

Views: 2289

Answers (1)

John Leehey
John Leehey

Reputation: 22240

Your code is flawed - no matter what the checkbox state is, the unreadCount.setVisibility(View.GONE); line will never be run. If the checkbox is checked, the beginning section of the if statement will be run. If it is not checked, the second nested if will skip over that line. You need to take out the second nested 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);
}

Aside from this snippet, there is probably a flaw in your layout that is causing the view not to be shown. Try testing it with a setVisibility(View.VISIBLE) line outside of any conditional statements to see if it shows, then I'd check your layout or post it here.

Upvotes: 2

Related Questions