当前位置: 首页 > 知识库问答 >
问题:

无法在Xamarin项目中使用appcompat控件

阙沛
2023-03-14

我一直在尝试在我的Android应用程序中使用AppCompat组件,但出于某些原因,SetContentView方法不断抛出:

Android意见。充气异常:二进制XML文件行#1:二进制XML文件行#1:错误充气类android。支持设计小装置。文本输入布局

异常的堆栈跟踪:

在系统中。运行时。例外服务。例外DispatchInfo。在/Users/builder/data/lanes/3540/1cf254db/source/mono/external/referencesource/mscorlib/system/runtime/exceptionservices/exceptionservices common中插入[0x0000c]。cs:143在爪哇。互操作。JniEnvironment实例方法。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在爪哇。互操作。JNIPermembers JniInstanceMethods。InvokeVirtualVoidMethod(System.String encodedMember,IJavaPeerable self,Java.Interop.JniArgumentValue*parameters)[0x00068]位于/Users/builder/data/lanes/3540/1cf254db/source/Java中。Interop/src/Java。Interop/Java。Interop/jnipermembers。JniInstanceMethods_调用。cs:31Android。应用程序。活动SetContentView(Int32 layoutResID)[0x00017]位于/Users/builder/data/lanes/3540/1cf254db/source/monodroid/src/Mono中。Android/platforms/Android-23/src/generated/Android。应用程序。活动cs:4940在AttentitAndRoidClient。后勤活动。在C:\Users\brakm\onedrive\dokumenti\visual studio 2015\Projects\AttendITDesktopClient\AttendITAndroidClient\Activities\LoginActivity中初始化()[0x00002]。cs:30--托管Android的终结。意见。充气异常堆栈跟踪---Android。看法充气异常:二进制XML文件行#1:二进制XML文件行#1:错误充气类android。支持设计小装置。android上的文本输入布局。看法更平坦。在android上充气(LayoutInflater.java:539)。看法更平坦。在android上充气(LayoutInflater.java:423)。看法更平坦。在android上充气(LayoutInflater.java:374)。支持v7。应用程序。AppCompatDelegateImplV7。android上的setContentView(AppCompateDelegateImplv7.java:280)。支持v7。应用程序。应用程序活动。setContentView(AppCompatActivity.java:140)位于md5d9765193e278a5bdda80f23f9bd7e090。后勤活动。n_onCreate(本机方法)在md5d9765193e278a5bdda80f23f9bd7e090。后勤活动。android上的onCreate(LoginActivity.java:29)。应用程序。活动android上的performCreate(Activity.java:6237)。应用程序。仪器。android上的callActivityOnCreate(Instrumentation.java:1107)。应用程序。活动线程。在android上执行LaunchActivity(ActivityThread.java:2369)。应用程序。活动线程。android上的handleLaunchActivity(ActivityThread.java:2476)。应用程序。活动线程-android上的wrap11(ActivityThread.java)。应用程序。android上的ActivityThread$H.handleMessage(ActivityThread.java:1344)。操作系统。汉德勒。android上的dispatchMessage(Handler.java:102)。操作系统。活套。android上的loop(Looper.java:148)。应用程序。活动线程。java上的main(ActivityThread.java:5417)。朗,反思一下。方法在com上调用(本机方法)。Android内部的操作系统。ZygoteInit$MethodandArgscaler。在com上运行(zyteinit.java:726)。Android内部的操作系统。合子体。main(ZygoteInit.java:616)由以下原因引起:android。看法充气异常:二进制XML文件行#1:充气类android时出错。支持设计小装置。android上的文本输入布局。看法更平坦。android上的createViewFromTag(LayoutInflater.java:776)。看法更平坦。android上的createViewFromTag(LayoutInflater.java:704)。看法更平坦。android上的rInflate(LayoutInflater.java:835)。看法更平坦。android上的rInflateChildren(LayoutInflater.java:798)。看法更平坦。android上的rInflate(LayoutInflater.java:838)。看法更平坦。android上的rInflateChildren(LayoutInflater.java:798)。看法更平坦。充气(LayoutInflater.java:515)。。。还有18个原因:java。lang.ClassNotFoundException:在路径:DexPathList[[zip文件”/data/app/AttendITAndroidClient.AttendITAndroidClient-1/base.apk]上未找到类“android.support.design.widget.TextInputLayout”,NativeLibraryDirectory=[/data/app/AttendITAndroidClient.AttendITAndroidClient-1/lib/x86,/data/app/AttendITAndroidClient.AttendITAndroidClient-1/base.apk!/lib/x86,/vendor/lib,/system/lib]]位于dalvik。系统BaseDexClassLoader。java上的findClass(BaseDexClassLoader.java:56)。lang.ClassLoader。java上的loadClass(ClassLoader.java:511)。lang.ClassLoader。android上的loadClass(ClassLoader.java:469)。看法更平坦。android上的createView(LayoutInflater.java:583)。看法更平坦。createViewFromTag(LayoutInflater.java:764)。。。还有24个:java。lang.ClassNotFoundException:android。支持设计小装置。java上的TextInputLayout。朗,同学们。java上的classForName(本机方法)。lang.BootClassLoader。java上的findClass(ClassLoader.java:781)。lang.BootClassLoader。java上的loadClass(ClassLoader.java:841)。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();
}

共有1个答案

岳曦
2023-03-14

错误在于:

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

是一个Android支持设计库,在你的案例中,根据你的项目截图,你的软件包文件夹中缺少该库。添加这个Android支持设计库可以解决这个问题。安装、关闭VS、清除重建,并查看错误是否仍然存在。干杯

 类似资料:
  • 如何在android xamarin项目中使用来自Maven或j-center存储库的预构建模块代码?

  • 重现问题的步骤: 按照本指南创建空白XF应用程序,应用应用程序压缩和材料设计 将Picker控件添加到主页,其中包含一些项目(不管是什么) 启动应用程序(在设备5.0和模拟器4.4上测试),尝试快速双击选择器EditText字段-它会导致打开两个Alert对话框(或任何东西),其中包含选择器元素。当你选择一些元素或触摸取消按钮顶部对话框会关闭并显示底层(我们点击了两次,如果我们足够快-有两个对话框

  • 我试图建立一个具有以下依赖关系的应用程序。 这是我在红帽网站上找到的一个例子-http://www.jboss.org/quickstarts/eap/helloworld-jms/ 我正在使用Netbeans 8.0.2。(还在dos和eclipse中使用Maven命令进行了尝试)我在构建时遇到了一个错误,下面是相同的日志: 我可以在以下路径找到文件: https://maven.reposit

  • 问题内容: 我正在尝试为我的项目编写一个单元测试,但是它不允许我使用配置管理器。现在我的项目像 ASP.Net应用程序(所有aspx页) ProjectCore(所有C#文件-模型) ProjectTest(所有测试) 在我的ProjectCore中,我可以从System.Configuration访问ConfigurationManager对象,并将信息传递到项目中。但是,当我运行涉及Confi

  • 当我构建一些简单的项目时,Eclipse会在我的工作区中自动生成appcompat_v7库项目,并将其包含在我的原始项目的依赖列表中。同时,我下载了几次新的支持库(通过SDK管理器)。然后,我尝试再次构建相同的项目,但这一次在依赖项部分,我手动删除了appcompat_v7,并添加了由成功构建的Android-SDK \ extras \ Android \ support \ V7 \ app

  • 我有一个多项目构建,而且我经常发现自己全面锁定了工件的版本。因此,在我的根项目中,我定义了如下内容: 虽然我可以在任何地方使用 ,包括其他子项目: 我无法在插件块内执行此操作: 给我错误“在这种情况下,隐式接收器无法调用 pkgVersions。如果需要,请使用明确的”。我假设这是因为隐式接收器可能是文件的 JVM 印象?但相反,它使用的是。尝试使用 自动完成只会显示。这只是我的一个长期猜测。但是