2016-09-12 66 views
-1

我一直想在我的Android應用程序使用程序兼容性組件,但由於某些原因的setContentView方法不斷拋出:不能使用程序兼容性控制在Xamarin項目

Android.Views.InflateException: Binary XML file line #1: Binary XML file line #1: Error inflating class android.support.design.widget.TextInputLayout

異常堆棧跟蹤:

at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() [0x0000c] in /Users/builder/data/lanes/3540/1cf254db/source/mono/external/referencesource/mscorlib/system/runtime/exceptionservices/exceptionservicescommon.cs:143 at Java.Interop.JniEnvironment+InstanceMethods.CallNonvirtualVoidMethod (JniObjectReference instance, JniObjectReference type, Java.Interop.JniMethodInfo method, Java.Interop.JniArgumentValue* args) [0x000a7] in /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 at Android.App.Activity.SetContentView (Int32 layoutResID) [0x00017] in /Users/builder/data/lanes/3540/1cf254db/source/monodroid/src/Mono.Android/platforms/android-23/src/generated/Android.App.Activity.cs:4940 at AttendITAndroidClient.LoginActivity.Initialize() [0x00002] in C:\Users\brakm\onedrive\dokumenti\visual studio 2015\Projects\AttendITDesktopClient\AttendITAndroidClient\Activities\LoginActivity.cs:30 --- End of managed Android.Views.InflateException stack trace --- android.view.InflateException: Binary XML file line #1: Binary XML file line #1: Error inflating class android.support.design.widget.TextInputLayout at android.view.LayoutInflater.inflate(LayoutInflater.java:539) at android.view.LayoutInflater.inflate(LayoutInflater.java:423) at android.view.LayoutInflater.inflate(LayoutInflater.java:374) at android.support.v7.app.AppCompatDelegateImplV7.setContentView(AppCompatDelegateImplV7.java:280) at android.support.v7.app.AppCompatActivity.setContentView(AppCompatActivity.java:140) at md5d9765193e278a5bdda80f23f9bd7e090.LoginActivity.n_onCreate(Native Method) at md5d9765193e278a5bdda80f23f9bd7e090.LoginActivity.onCreate(LoginActivity.java:29) at android.app.Activity.performCreate(Activity.java:6237) at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1107) at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2369) at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2476) at android.app.ActivityThread.-wrap11(ActivityThread.java) at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1344) at android.os.Handler.dispatchMessage(Handler.java:102) at android.os.Looper.loop(Looper.java:148) at android.app.ActivityThread.main(ActivityThread.java:5417) at java.lang.reflect.Method.invoke(Native Method) at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616) Caused by: android.view.InflateException: Binary XML file line #1: Error inflating class android.support.design.widget.TextInputLayout at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:776) at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:704) at android.view.LayoutInflater.rInflate(LayoutInflater.java:835) at android.view.LayoutInflater.rInflateChildren(LayoutInflater.java:798) at android.view.LayoutInflater.rInflate(LayoutInflater.java:838) at android.view.LayoutInflater.rInflateChildren(LayoutInflater.java:798) at android.view.LayoutInflater.inflate(LayoutInflater.java:515) ... 18 more Caused by: java.lang.ClassNotFoundException: Didn't find class "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]] at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:56) at java.lang.ClassLoader.loadClass(ClassLoader.java:511) at java.lang.ClassLoader.loadClass(ClassLoader.java:469) at android.view.LayoutInflater.createView(LayoutInflater.java:583) at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:764) ... 24 more Suppressed: 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 more Caused by: java.lang.NoClassDefFoundError: Class not found using the boot class loader; no stack trace available

活動的繼承權類,並且是使用權主題(據我所知)(我已經嘗試使用「@android:風格/ Theme.AppCompat」以及)

[Activity(Label = "AttendIT Mobile", MainLauncher = true, Icon = "@drawable/icon", Theme = "@style/Theme.AppCompat")] 
public class LoginActivity : AppCompatActivity 

這裏有(相關)項目引用和組件。 Project references and components.

我這麼想嗎?有任何想法嗎?

編輯

這裏是我的佈局XML:

這裏是我的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

+0

向我們展示你對各呼叫代碼!你有沒有嘗試清理你的解決方案,刪除你的'bin/obj'文件夾並重建? –

+0

有時清洗和重建不會做的伎倆,請嘗試關閉VS,然後清理重建項目。 – JLONG

+0

@JLONG嘗試你們提出的一切,可悲的是沒有什麼工作,加入了更多的東西來回答,我相信可能是有用的。 – Aleksandar

回答

2

的錯誤是:

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

是一個支持Android的設計庫,在你的情況,你缺少一個庫您打包文件夾基於您的項目的屏幕截圖。添加這個Android Support Design Library可以解決問題。安裝,關閉VS,清理重建並查看錯誤仍然存​​在。乾杯!

+0

工作正常!謝謝。 – Aleksandar

+0

沒有問題。快樂的編碼! – JLONG