setVisibility(View.INVISIBLE)导致异常,为什么?



为什么我的setVisibility(View.INVISIBLE)导致异常,而 setVisibility for TextView 有效。我也尝试为 ImageView 设置它,但它也不起作用 - 我也得到了异常

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

款式.xml:

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

您正在尝试将可见性设置为 样式 (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" />

向视图添加 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 必须用于视图,而不是样式。

相关内容

最新更新