我一直在尝试在我的Android应用程序中使用AppCompat组件,但由于某种原因,SetContentView方法不断抛出:
Android.Views.InflateException:二进制XML文件行#1:二进制XML 文件行#1:错误膨胀类 android.support.design.widget.TextInputLayout
异常的堆栈跟踪:
在/ Users / builder / data / lanes / 3540 / 1cf254db / source / mono / external / referencesource / mscorlib / system / runtime / exceptionservices / exceptionservicescommon中的System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()[0x0000c]。 CS:143 at Java.Interop.JniEnvironment + InstanceMethods.CallNonvirtualVoidMethod(JniObjectReference实例,JniObjectReference类型,Java.Interop.JniMethodInfo方法,Java.Interop.JniArgumentValue * args)[0x000a7] / Users / builder / data / lanes / 3540 / 1cf254db / source /Java.Interop/src/Java.Interop/Java.Interop/JniEnvironment.g.cs:12083 at Java.Interop.JniPeerMembers + JniInstanceMethods.InvokeVirtualVoidMethod(System.String encodedMember,IJavaPeerable self,Java.Interop.JniArgumentValue * parameters)[0x00068] in /Users/builder/data/lanes/3540/1cf254db/source/Java.Interop/ SRC / Java.Interop / Java.Interop / JniPeerMembers.JniInstanceMethods_Invoke.cs:31 在/Users/builder/data/lanes/3540/1cf254db/source/monodroid/src/Mono.Android/platforms/android-23/src/generated/Android中的Android.App.Activity.SetContentView(Int32 layoutResID)[0x00017] .App.Activity.cs:4940 at AttendITAndroidClient.LoginActivity.Initialize()[0x00002]在C:\ Users \ brakm \ onedrive \ dokumenti \ visual studio 2015 \ Projects \ AttendITDesktopClient \ AttendITAndroidClient \ Activities \ LoginActivity.cs:30 ---托管Android.Views.InflateException堆栈跟踪结束--- android.view.InflateException:二进制XML文件行#1:二进制XML文件行#1:错误膨胀类android.support.design.widget.TextInputLayout 在android.view.LayoutInflater.inflate(LayoutInflater.java:539) 在android.view.LayoutInflater.inflate(LayoutInflater.java:423) 在android.view.LayoutInflater.inflate(LayoutInflater.java:374) 在android.support.v7.app.AppCompatDelegateImplV7.setContentView(AppCompatDelegateImplV7.java:280) 在android.support.v7.app.AppCompatActivity.setContentView(AppCompatActivity.java:140) at md5d9765193e278a5bdda80f23f9bd7e090.LoginActivity.n_onCreate(Native Method) at md5d9765193e278a5bdda80f23f9bd7e090.LoginActivity.onCreate(LoginActivity.java:29) 在android.app.Activity.performCreate(Activity.java:6237) 在android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1107) 在android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2369) 在android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2476) 在android.app.ActivityThread.-wrap11(ActivityThread.java) 在android.app.ActivityThread $ H.handleMessage(ActivityThread.java:1344) 在android.os.Handler.dispatchMessage(Handler.java:102) 在android.os.Looper.loop(Looper.java:148) 在android.app.ActivityThread.main(ActivityThread.java:5417) at java.lang.reflect.Method.invoke(Native Method) 在com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run(ZygoteInit.java:726) 在com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616) 引起:android.view.InflateException:二进制XML文件行#1:错误膨胀类android.support.design.widget.TextInputLayout 在android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:776) 在android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:704) 在android.view.LayoutInflater.rInflate(LayoutInflater.java:835) 在android.view.LayoutInflater.rInflateChildren(LayoutInflater.java:798) 在android.view.LayoutInflater.rInflate(LayoutInflater.java:838) 在android.view.LayoutInflater.rInflateChildren(LayoutInflater.java:798) 在android.view.LayoutInflater.inflate(LayoutInflater.java:515) ......还有18个 引起:java.lang.ClassNotFoundException:没找到类" android.support.design.widget.TextInputLayout" on path:DexPathList [[zip file" /data/app/AttendITAndroidClient.AttendITAndroidClient-1/base.apk"],nativeLibraryDirectories = [/ data / app / AttendITAndroidClient.AttendITAndroidClient-1 / lib / x86,/ data / app / AttendITAndroidClient.AttendITAndroidClient-1 / base.apk!/ lib / x86,/ vendor / lib,/ system / lib]] 在dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:56) at java.lang.ClassLoader.loadClass(ClassLoader.java:511) at java.lang.ClassLoader.loadClass(ClassLoader.java:469) 在android.view.LayoutInflater.createView(LayoutInflater.java:583) 在android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:764) ......还有24个 抑制:java.lang.ClassNotFoundException:android.support.design.widget.TextInputLayout at java.lang.Class.classForName(Native Method) at java.lang.BootClassLoader.findClass(ClassLoader.java:781) at java.lang.BootClassLoader.loadClass(ClassLoader.java:841) at java.lang.ClassLoader.loadClass(ClassLoader.java:504) ......还有27个 引起:java.lang.NoClassDefFoundError:使用引导类加载器找不到类;没有可用的堆栈跟踪
活动是继承正确的类,并使用正确的主题(AFAIK)(我已尝试使用" @android:style / Theme.AppCompat"以及)
[Activity(Label = "AttendIT Mobile", MainLauncher = true, Icon = "@drawable/icon", Theme = "@style/Theme.AppCompat")]
public class LoginActivity : AppCompatActivity
我错过了什么吗?有什么想法吗?
修改
这是我的布局xml:
<?xml version="1.0" encoding="utf-8"?>
<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:fitsSystemWindows="true">
<LinearLayout
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:paddingTop="56dp"
android:paddingLeft="24dp"
android:paddingRight="24dp">
<ImageView
android:src="@drawable/AttendITLogoWhite"
android:layout_width="wrap_content"
android:layout_height="72dp"
android:layout_marginBottom="24dp"
android:layout_gravity="center_horizontal" />
<android.support.design.widget.TextInputLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="8dp"
android:layout_marginBottom="8dp">
<EditText
android:id="@+id/UsernameEdit"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:inputType="textEmailAddress"
android:hint="Email" />
</android.support.design.widget.TextInputLayout>
<android.support.design.widget.TextInputLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="8dp"
android:layout_marginBottom="8dp">
<EditText
android:id="@+id/PasswordEdit"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:inputType="textPassword"
android:hint="Password" />
</android.support.design.widget.TextInputLayout>
<android.support.v7.widget.AppCompatButton
android:id="@+id/LoginButton"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_marginTop="24dp"
android:layout_marginBottom="24dp"
android:padding="12dp"
android:text="Login"/>
<TextView
android:id="@+id/Settings"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_marginBottom="24dp"
android:text="No account yet? Create one"
android:gravity="center"
android:textSize="16dip" />
</LinearLayout>
这是我的packages.config
<?xml version="1.0" encoding="utf-8"?>
<packages>
<package id="Refractored.FloatingActionButton" version="1.3.0" targetFramework="monoandroid60" />
<package id="Xamarin.Android.Support.Animated.Vector.Drawable" version="23.4.0.1" targetFramework="monoandroid60" />
<package id="Xamarin.Android.Support.v4" version="23.4.0.1" targetFramework="monoandroid60" />
<package id="Xamarin.Android.Support.v7.AppCompat" version="23.4.0.1" targetFramework="monoandroid60" />
<package id="Xamarin.Android.Support.v7.RecyclerView" version="22.0.0.0" targetFramework="monoandroid60" />
<package id="Xamarin.Android.Support.Vector.Drawable" version="23.4.0.1" targetFramework="monoandroid60" />
</packages>
抛出异常的代码:
private void Initialize()
{
SetContentView(Resource.Layout.Login); //this method throws exception
Button button = FindViewById<Button>(Resource.Id.LoginButton);
button.Click += LoginButtonOnClick;
TextView textView = FindViewById<TextView>(Resource.Id.Settings);
textView.Click += SettingsOnClick;
_loginLoader = new ProgressDialog(this);
_loginLoader.SetCancelable(false);
_loginLoader.SetMessage(Resources.GetString(Resource.String.LoginLoaderMessage));
TimeSpan timeout = new TimeSpan(0, 0, 30);
BasicHttpBinding binding = new BasicHttpBinding
{
Name = "basicHttpBinding",
MaxBufferSize = 2147483647,
MaxReceivedMessageSize = 2147483647,
SendTimeout = timeout,
OpenTimeout = timeout,
ReceiveTimeout = timeout
};
_client = new AttendITWCFServiceClient(binding, new EndpointAddress("http://192.168.1.104:55416/AttendITWCFService.svc"));
_client.TryLoginCompleted += ClientOnTryLoginCompleted;
}
protected override void OnCreate(Bundle bundle)
{
base.OnCreate(bundle);
Initialize();
}
答案 0 :(得分:2)
错误是:
java.lang.ClassNotFoundException: Didn't find class "android.support.design.widget.TextInputLayout"
Android支持设计库,根据您的情况,您在打包文件夹上缺少基于项目屏幕截图的库。添加此Android Support Design Library可以解决问题。安装,关闭VS,清理重建并查看错误仍然存在。干杯!