2017-03-08 2 views
-2

Warum verursacht meine setVisibility (View.INVISIBLE) Ausnahme, während setVisibility für TextView funktioniert. Ich habe auch versucht es für Image gesetzt und es funktioniert auch nicht - ich Ausnahme auch immer binsetVisibility (View.INVISIBLE) verursacht Ausnahme, warum?

public void alertdiag() { 
    AlertDialog.Builder dialogBuilder = new AlertDialog.Builder(this); 
    LayoutInflater inflater = this.getLayoutInflater(); 
    View dialogView = inflater.inflate(R.layout.alertdiag_layout, null); 
    dialogBuilder.setView(dialogView).show(); 

    View Divider1 = (View) dialogView.findViewById(R.style.Divider1); 
    Divider1.setVisibility(View.INVISIBLE); //causes java.lang.IllegalStateException: Could not execute method of the activity" 

    TextView HELP0 = (TextView) dialogView.findViewById(R.id.HELP0); 
    HELP0.setVisibility(View.INVISIBLE); // this works 
} 

alertdiag_layout.xml:

<View style="@style/Divider1" 
    android:layout_below="@+id/HELP3" 
    android:background="#000000"    
    android:layout_alignRight="@+id/HELP_FIX_LINE" 
    android:layout_alignLeft="@+id/HELP3" 
/> 

<TextView 
    android:id="@+id/HELP0" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_centerHorizontal="true" 
    android:layout_below="@+id/HELP_FIX_LINE"  
    android:textStyle="bold" 
    android:typeface="normal" 
/>   

styles.xml:

<style name="Divider1"> 
    <item name="android:layout_width">match_parent</item> 
    <item name="android:layout_height">1dp</item> 
</style> 
+0

Sie versuchen, die Sichtbarkeit auf einen Style (R.style.Divider1) einzustellen. Fügen Sie Ihrer Ansicht eine ID hinzu und ändern Sie R.style.Divider1 in R.id.yourNewId –

+0

PERFECT! das funktioniert, DANKE! – juraset

+0

Ich machte es als eine Antwort für Sie zu akzeptieren –

Antwort

1

Sie versuchen die Sichtbarkeit zu einem Style (R.style.Divider1)

hinzufügen Id auf Ihre Ansicht und ändern Sie die R.style.Divider1 zu R.id.yourNewId

<View style="@style/Divider1" android:id="@+id/yourNewId" 
    android:layout_below="@id/HELP3" android:background="#000000" 
    android:layout_alignRight="@id/HELP_FIX_LINE"   
    android:layout_alignLeft="@id/HELP3" /> 
einstellen
0

Fügen Sie Ihrer Ansicht das Attribut id hinzu

<View style="@style/Divider1" 
    android:id="@+id/my_view" 
    android:layout_below="@id/HELP3" 
    android:background="#000000"   
    android:layout_alignRight="@id/HELP_FIX_LINE" 
    android:layout_alignLeft="@id/HELP3" 
    /> 

HINWEIS: Ich habe @ + ID/HELP3 und @ + ID/HELP_FIX_LINE mit @ ID/HELP3 und @ ID/HELP_FIX_LINE jeweils geändert, weil @ + ID/nur verwendet wird, wenn Sie eine Ansicht eine ID geben. Es wird nicht verwendet, um andere Ansichten zu verweisen. Jetzt

, Ändern Sie diese Codezeile

View Divider1 = (View) dialogView.findViewById(R.style.Divider1); 

mit

View Divider1 = (View) dialogView.findViewById(R.id.my_view); 

Es wird die Ansicht mit der angegebenen ID, statt Stil.

Um die Ansicht unsichtbar machen Sie

Divider1.setVisibility(View.INVISIBLE); 

setVisibility einstellen müssen müssen in der Ansicht verwendet werden, nicht auf den Stil.

Verwandte Themen