2016-06-15 24 views
5

Lauf Android Studio 2.1.2, gefunden Windows 7.Fehler aufblähenden Klasse - NestedScrollView - Klasse nicht

ich eine Scrollview mit einem NestedScrollView ersetzt und jetzt bin ich

android.view.InflateException bekommen : Binary XML-Datei Zeile # 2: Fehler aufblähenden Klasse NestedScrollView

java.lang.ClassNotFoundException: nicht Klasse "android.view.NestedScrollView" auf Pfad: /data/app/com.assemblyguide.remote -48 .apk

... wenn ich SetContentView() für diese XML-Datei aufruft. Ich habe es nicht verstanden, als ich nur eine ScrollView hatte.

Ich habe versucht, zu reinigen, und den Cache ungültig und Wiederaufbau. Das XML sieht so aus. . .

<?xml version="1.0" encoding="utf-8"?> 
<NestedScrollView xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="wrap_content" 
    android:layout_height="match_parent" 
    android:orientation="vertical" > 

    <!-- This linear layout is because the scrollview can have only 1 direct child --> 
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:orientation="vertical" > 

     <!-- Relative layout for Workorder --> 
     <RelativeLayout 
      android:id="@+id/rellayWorkorder" 
      android:background="#383838" 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" 
      android:layout_marginTop="30dp" 
      android:layout_marginBottom="2dp"> 
      <TextView 
       android:id="@+id/workorderlabel" 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:layout_alignParentLeft="true" 
       android:layout_margin="2dp" 
       android:gravity="left" 
       android:textAppearance="?android:attr/textAppearanceMedium" 
       android:text="Work Order:"/> 

      <TextView 
       android:id="@+id/workorderContent" 
       android:layout_width="150dp" 
       android:layout_height="wrap_content" 
       android:layout_alignParentRight="true" 
       android:layout_margin="2dp" 
       android:gravity="right" 
       android:textAppearance="?android:attr/textAppearanceMedium" 
       android:text="---workorder---"/> 
     </RelativeLayout> 


     <!-- Relative layout for Required Time 
    <FrameLayout 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:layout_gravity="center_horizontal"></FrameLayout> --> 

     <RelativeLayout 
      android:id="@+id/rellayRequiredTime" 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" 
      android:layout_marginTop="30dp" 
      android:layout_marginBottom="2dp"> 
      <TextView 
       android:id="@+id/requiredTimelabel" 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:layout_alignParentLeft="true" 
       android:layout_margin="2dp" 
       android:gravity="left" 
       android:textAppearance="?android:attr/textAppearanceMedium" 
       android:text="Required Time:"/> 

      <TextView 
       android:id="@+id/requiredTimeContent" 
       android:layout_width="150dp" 
       android:layout_height="wrap_content" 
       android:layout_alignParentRight="true" 
       android:layout_margin="2dp" 
       android:gravity="right" 
       android:textAppearance="?android:attr/textAppearanceMedium" 
       android:text="--- 00 minutes ---"/> 
     </RelativeLayout> 

     <!-- Relative layout for Time remaining --> 
     <RelativeLayout 
      android:id="@+id/rellayTimeRemaining" 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" 
      android:layout_marginTop="30dp" 
      android:layout_marginBottom="2dp"> 
      <TextView 
       android:id="@+id/timeremaininglabel" 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:layout_alignParentLeft="true" 
       android:layout_margin="2dp" 
       android:gravity="left" 
       android:textAppearance="?android:attr/textAppearanceMedium" 
       android:text="Time Remaining:"/> 

      <TextView 
       android:id="@+id/tviewtimeremainingContent" 
       android:layout_width="150dp" 
       android:layout_height="wrap_content" 
       android:layout_alignParentRight="true" 
       android:layout_margin="2dp" 
       android:gravity="right" 
       android:textAppearance="?android:attr/textAppearanceMedium" 
       android:text="--- 0:00:00---"/> 
     </RelativeLayout> 

     <!-- Linear layout for Record Start/Record End buttons --> 
     <LinearLayout 
      android:orientation="horizontal" 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" 
      android:layout_marginTop="10dp" > 
      <Button 
       android:id="@+id/debulkrecordStart" 
       android:layout_width="150dp" 
       android:layout_height="wrap_content" 
       android:layout_marginTop="6dp" 
       android:layout_marginRight="4dp" 
       android:gravity="center" 
       android:textAppearance="?android:attr/textAppearanceMedium" 
       android:onClick="OnSetRecordStartTimeClick" 
       android:text="Record Start"/> 
      <Button 
       android:id="@+id/debulkrecordEnd" 
       android:layout_width="150dp" 
       android:layout_height="wrap_content" 
       android:layout_marginTop="6dp" 
       android:layout_marginRight="4dp" 
       android:gravity="center" 
       android:textAppearance="?android:attr/textAppearanceMedium" 
       android:onClick="OnSetRecordEndTimeClick" 
       android:text="Record End"/> 
     </LinearLayout> 

     <!-- Relative layout for Vacuum level --> 
     <RelativeLayout 
      android:id="@+id/rellayvacuumlevel" 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" 
      android:layout_marginBottom="2dp"> 
      <TextView 
       android:id="@+id/vaclabel" 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:layout_alignParentLeft="true" 
       android:layout_margin="2dp" 
       android:gravity="left" 
       android:textAppearance="?android:attr/textAppearanceSmall" 
       android:text="Vacuum Level (inches Hg):"/> 
      <EditText 
       android:id="@+id/vacleveledit" 
       android:layout_width="120dp" 
       android:layout_height="wrap_content" 
       android:layout_alignParentRight = "true" 
       android:layout_margin="2dp" 
       android:gravity="left" 
       android:textAppearance="?android:attr/textAppearanceSmall" 
       android:inputType="text|textCapCharacters" 
       android:text="vac level" 
       android:layout_marginRight="2dp" 
       android:layout_marginTop="2dp" 
       android:layout_marginBottom="2dp"/> 
     </RelativeLayout> 

     <!-- Relative layout for Vac Gauge Equipment # --> 
     <RelativeLayout 
      android:id="@+id/rlayvacuumGauge" 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" 
      android:layout_marginBottom="2dp"> 
      <TextView 
       android:id="@+id/vacgaugelabel" 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:layout_alignParentLeft="true" 
       android:layout_margin="2dp" 
       android:gravity="left" 
       android:textAppearance="?android:attr/textAppearanceSmall" 
       android:text="Vac Gauge Equipment #:"/> 
      <EditText 
       android:id="@+id/vacgaugeedit" 
       android:layout_width="120dp" 
       android:layout_height="wrap_content" 
       android:layout_alignParentRight = "true" 
       android:layout_margin="2dp" 
       android:gravity="left" 
       android:textAppearance="?android:attr/textAppearanceSmall" 
       android:inputType="text|textCapCharacters" 
       android:text="equip. #"/> 
     </RelativeLayout> 



     <!-- Relative layout for Calibration Due date --> 
     <RelativeLayout 
      android:id="@+id/rlaycalibdue" 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" 
      android:layout_marginBottom="2dp"> 
      <TextView 
       android:id="@+id/calibduelabel" 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:layout_alignParentLeft="true" 
       android:layout_margin="2dp" 
       android:gravity="left" 
       android:textAppearance="?android:attr/textAppearanceSmall" 
       android:text="Calibration Due Date:"/> 
      <EditText 
       android:id="@+id/calibdueedit" 
       android:layout_width="120dp" 
       android:layout_height="wrap_content" 
       android:layout_alignParentRight = "true" 
       android:layout_margin="2dp" 
       android:gravity="left" 
       android:textAppearance="?android:attr/textAppearanceSmall" 
       android:inputType="text|textCapCharacters" 
       android:text="mm/dd/yyyy"/> 
     </RelativeLayout> 


     <CalendarView 
      android:id="@+id/debulkcalendar" 
      android:layout_width="300dp" 
      android:layout_height="250dp" 
      android:minDate="01/01/2016" 
      android:maxDate="11/30/2016" 
      /> 


     <!-- this linear layout is for the debulk override and done buttons --> 
     <LinearLayout 
      android:orientation="horizontal" 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" 
      android:layout_marginTop="10dp" > 
      <Button 
       android:id="@+id/debulkOverride" 
       android:layout_width="150dp" 
       android:layout_height="wrap_content" 
       android:layout_marginTop="6dp" 
       android:layout_marginRight="4dp" 
       android:onClick="OnResetClick" 
       android:gravity="center" 
       android:textAppearance="?android:attr/textAppearanceMedium" 
       android:text="Override"/> 
      <Button 
       android:id="@+id/debulkDone" 
       android:layout_width="150dp" 
       android:layout_height="wrap_content" 
       android:layout_marginTop="6dp" 
       android:layout_marginRight="2dp" 
       android:onClick="onDoneBtnClick" 
       android:gravity="center" 
       android:textAppearance="?android:attr/textAppearanceMedium" 
       android:text="Done"/> 
     </LinearLayout> 

    </LinearLayout> 

</NestedScrollView> 

Was bedeutet dieser Fehler und wie behebe ich ihn?

Antwort

17

Der vollständige Klassenname lautet android.support.v4.widget.NestedScrollView. Ersetzen Sie das <NestedScrollView> Element durch <android.support.v4.widget.NestedScrollView> und es sollte gut funktionieren. Stellen Sie sicher, dass Sie die v4-Unterstützungsbibliothek auch in Ihrer build.gradle-Datei haben.

+0

Danke, aber ich verstehe immer noch nicht: Warum nicht dieses Flag einen Fehler in das XML zur ** Build-Zeit **? Auch was ist die Support-Bibliothek, d. H. Was ist der Unterschied zwischen der Support-Bibliothek und nur den regulären Android-Klassen? – user316117

+0

Die Support-Bibliothek ist ein Backport bestimmter Android-Funktionen, die später hinzugefügt wurden. Zum Beispiel wurde das Widget "Toolbar" in v21 hinzugefügt. Das heißt, wenn Sie eine Toolbar in Ihrer App verwenden möchten, müsste Ihr minSdk 21 sein. Es gibt eine Implementierung von 'android.support.v7.widget.Toolbar', die uns erlaubt, die Symbolleiste mit einem minSdk von 7 zu verwenden. In re: Build Zeit xml Fehler, ich bin mir nicht sicher, aber wenn Sie Android Studio verwenden, können Sie auf die Registerkarte "Design" klicken, und es wird ein Fehler angezeigt. – chessdork

6

Sie müssen diese Zeile in Abhängigkeiten hinzuzufügen:

compile 'com.android.support:support-v4:23.4.0' 

Auch als chessdork sagte, es ist android.support.v4.widget.NestedScrollView nicht NestedScrollView

+0

wo meinst du mit "Abhängigkeiten"? – user316117

+0

Wenn Sie Android Studio verwenden, finden Sie es in Build.Gradle-Datei –