如何在自定义视图中解决 InflateException
How to solve InflateException at custom view
我的问题是关于 Android/Java.
我的main.xml:
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent">
<org.javaforum.input
android:layout_width="wrap_content"
android:inputType="textEmailAddress"
android:layout_height="wrap_content"
oninvalid="this.setCustomValidity('SO - Please enter a correct E-Mail!!!')"
android:hint="Enter your E-Mail"/>
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Button"/>
</LinearLayout>
我的input.java:
public class input extends TextView{
public input(Context context, AttributeSet attr) {
super(context, attr, getIdentifier(context,attr));
if(existsoninvalid(attr)){
//Code
}
}
public static boolean existsoninvalid(AttributeSet attr){
for(int f=1; f<=attr.getAttributeCount(); f++){
if(attr.getAttributeName(f)=="oninvalid"){//Here must be the error
//Code
}
}
return false;
}
@Override
public void onFinishInflate() {
}
}
应用程序崩溃并出现异常:
java.lang.RuntimeException: Unable to start activity
ComponentInfo{org.javaforum/org.javaforum.MainActivity}:
android.view.InflateException: Binary XML file line #7: Binary XML
file line #7: Error inflating class org.javaforum.input
但是当我删除这个时:
if(attr.getAttributeName(f)=="oninvalid"){//Here must be the error
//Code
}
应用程序没有崩溃,我也没有收到任何异常。我不知道为什么。问题出在哪里?我该如何解决?
该异常有一个嵌套的“由”异常引起,包含更多详细信息。
索引是从零开始的。您的 for 循环从 1 开始,在另一端以 1 结束。
此外,在 Java 中使用 equals()
而不是 ==
进行字符串比较。 (这不会导致崩溃,但也不会按您预期的方式工作。)
我的问题是关于 Android/Java.
我的main.xml:
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent">
<org.javaforum.input
android:layout_width="wrap_content"
android:inputType="textEmailAddress"
android:layout_height="wrap_content"
oninvalid="this.setCustomValidity('SO - Please enter a correct E-Mail!!!')"
android:hint="Enter your E-Mail"/>
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Button"/>
</LinearLayout>
我的input.java:
public class input extends TextView{
public input(Context context, AttributeSet attr) {
super(context, attr, getIdentifier(context,attr));
if(existsoninvalid(attr)){
//Code
}
}
public static boolean existsoninvalid(AttributeSet attr){
for(int f=1; f<=attr.getAttributeCount(); f++){
if(attr.getAttributeName(f)=="oninvalid"){//Here must be the error
//Code
}
}
return false;
}
@Override
public void onFinishInflate() {
}
}
应用程序崩溃并出现异常:
java.lang.RuntimeException: Unable to start activity ComponentInfo{org.javaforum/org.javaforum.MainActivity}: android.view.InflateException: Binary XML file line #7: Binary XML file line #7: Error inflating class org.javaforum.input
但是当我删除这个时:
if(attr.getAttributeName(f)=="oninvalid"){//Here must be the error
//Code
}
应用程序没有崩溃,我也没有收到任何异常。我不知道为什么。问题出在哪里?我该如何解决?
该异常有一个嵌套的“由”异常引起,包含更多详细信息。
索引是从零开始的。您的 for 循环从 1 开始,在另一端以 1 结束。
此外,在 Java 中使用 equals()
而不是 ==
进行字符串比较。 (这不会导致崩溃,但也不会按您预期的方式工作。)