无法在Xamarin项目

时间:2016-09-12 00:04:27

标签: android xamarin visual-studio-2015 android-appcompat

我一直在尝试在我的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

以下是(相关的)项目参考和组件。 Project references and components.

我错过了什么吗?有什么想法吗?

修改

这是我的布局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();
}

enter image description here 组件 enter image description here

1 个答案:

答案 0 :(得分:2)

错误是:

java.lang.ClassNotFoundException: Didn't find class "android.support.design.widget.TextInputLayout"

Android支持设计库,根据您的情况,您在打包文件夹上缺少基于项目屏幕截图的库。添加此Android Support Design Library可以解决问题。安装,关闭VS,清理重建并查看错误仍然存​​在。干杯!

相关问题