2017-03-08 108 views
-2

爲什麼我的setVisibility(View.INVISIBLE)導致異常,而 setVisibility for TextView起作用。我也試着將它設置爲ImageView的,它也無法正常工作 - 我得到的例外太多setVisibility(View.INVISIBLE)導致異常,爲什麼?

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

您正試圖將可見性設置爲樣式(R.style.Divider1)。將ID添加到您的視圖並將R.style.Divider1更改爲R.id.yourNewId –

+0

完美!這工作,謝謝! – juraset

+0

我把它作爲你接受的答案 –

回答

1

您正在嘗試設置能見度爲 樣式(R.style.Divider1)

的ID添加到您的查看和更改R.style.Divider1到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" /> 
0

將id屬性添加到您的視圖

<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" 
    /> 

注意:@ id/HELP3和@ + id/HELP_FIX_LINE分別使用@ id/HELP3和@ id/HELP_FIX_LINE,因爲@ + id /僅用於爲視圖提供ID時使用。它不是用來引用其他視圖。

現在,更改此行的代碼

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

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

它會找到給定id的觀點,而不是風格。

爲了使視圖不可見,你需要設置

Divider1.setVisibility(View.INVISIBLE); 

setVisibility必須在視圖中使用,而不是風格。

相關問題