16

ich die folgende Fehlermeldung bekommen, die ich nicht verstehe ...Android ClassNotFoundException mit ViewPager

06-15 22:06:49.196: W/dalvikvm(17622): threadid=1: thread exiting with uncaught exception (group=0x40bcc1f8) 
06-15 22:07:05.031: W/dalvikvm(17877): threadid=1: thread exiting with uncaught exception (group=0x40bcc1f8) 
06-15 22:07:05.031: E/AndroidRuntime(17877): FATAL EXCEPTION: main 
06-15 22:07:05.031: E/AndroidRuntime(17877): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.whipple.android/com.whipple.android.StockActivity}: android.view.InflateException: Binary XML file line #6: Error inflating class ViewPager 
06-15 22:07:05.031: E/AndroidRuntime(17877): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1968) 
06-15 22:07:05.031: E/AndroidRuntime(17877): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1993) 
06-15 22:07:05.031: E/AndroidRuntime(17877): at android.app.ActivityThread.access$600(ActivityThread.java:127) 
06-15 22:07:05.031: E/AndroidRuntime(17877): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1159) 
06-15 22:07:05.031: E/AndroidRuntime(17877): at android.os.Handler.dispatchMessage(Handler.java:99) 
06-15 22:07:05.031: E/AndroidRuntime(17877): at android.os.Looper.loop(Looper.java:137) 
06-15 22:07:05.031: E/AndroidRuntime(17877): at android.app.ActivityThread.main(ActivityThread.java:4512) 
06-15 22:07:05.031: E/AndroidRuntime(17877): at java.lang.reflect.Method.invokeNative(Native Method) 
06-15 22:07:05.031: E/AndroidRuntime(17877): at java.lang.reflect.Method.invoke(Method.java:511) 
06-15 22:07:05.031: E/AndroidRuntime(17877): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:794) 
06-15 22:07:05.031: E/AndroidRuntime(17877): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:561) 
06-15 22:07:05.031: E/AndroidRuntime(17877): at dalvik.system.NativeStart.main(Native Method) 
06-15 22:07:05.031: E/AndroidRuntime(17877): Caused by: android.view.InflateException: Binary XML file line #6: Error inflating class ViewPager 
06-15 22:07:05.031: E/AndroidRuntime(17877): at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:691) 
06-15 22:07:05.031: E/AndroidRuntime(17877): at android.view.LayoutInflater.rInflate(LayoutInflater.java:739) 
06-15 22:07:05.031: E/AndroidRuntime(17877): at android.view.LayoutInflater.inflate(LayoutInflater.java:489) 
06-15 22:07:05.031: E/AndroidRuntime(17877): at android.view.LayoutInflater.inflate(LayoutInflater.java:396) 
06-15 22:07:05.031: E/AndroidRuntime(17877): at android.view.LayoutInflater.inflate(LayoutInflater.java:352) 
06-15 22:07:05.031: E/AndroidRuntime(17877): at com.android.internal.policy.impl.PhoneWindow.setContentView(PhoneWindow.java:272) 
06-15 22:07:05.031: E/AndroidRuntime(17877): at android.app.Activity.setContentView(Activity.java:1851) 
06-15 22:07:05.031: E/AndroidRuntime(17877): at com.whipple.android.StockActivity.onCreate(StockActivity.java:17) 
06-15 22:07:05.031: E/AndroidRuntime(17877): at android.app.Activity.performCreate(Activity.java:4481) 
06-15 22:07:05.031: E/AndroidRuntime(17877): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1052) 
06-15 22:07:05.031: E/AndroidRuntime(17877): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1932) 
06-15 22:07:05.031: E/AndroidRuntime(17877): ... 11 more 
06-15 22:07:05.031: E/AndroidRuntime(17877): Caused by: java.lang.ClassNotFoundException: android.view.ViewPager 
06-15 22:07:05.031: E/AndroidRuntime(17877): at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:61) 
06-15 22:07:05.031: E/AndroidRuntime(17877): at java.lang.ClassLoader.loadClass(ClassLoader.java:501) 
06-15 22:07:05.031: E/AndroidRuntime(17877): at java.lang.ClassLoader.loadClass(ClassLoader.java:461) 
06-15 22:07:05.031: E/AndroidRuntime(17877): at android.view.LayoutInflater.createView(LayoutInflater.java:552) 
06-15 22:07:05.031: E/AndroidRuntime(17877): at android.view.LayoutInflater.onCreateView(LayoutInflater.java:636) 
06-15 22:07:05.031: E/AndroidRuntime(17877): at com.android.internal.policy.impl.PhoneLayoutInflater.onCreateView(PhoneLayoutInflater.java:66) 
06-15 22:07:05.031: E/AndroidRuntime(17877): at android.view.LayoutInflater.onCreateView(LayoutInflater.java:653) 
06-15 22:07:05.031: E/AndroidRuntime(17877): at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:678) 
06-15 22:07:05.031: E/AndroidRuntime(17877): ... 21 more 

Dies ist mein Code ...

public class StockActivity extends Activity { 
public ListAdapter listadapter; 
private StockPageAdapter myAdapter; 
private ViewPager myPager; 

@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    super.setContentView(R.layout.main); 

    this.myAdapter = new StockPageAdapter(this); 
    this.myPager = (ViewPager)super.findViewById(R.id.pager); 
    this.myPager.setAdapter(myAdapter); 
} 

Es ist ein ListAdapter mit einem ViewPager um durch die Listen zu blättern. Ich erweitere BaseAdapter und die Ansicht mit diesem Code aufblasen ...

LayoutInflater inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
row = inflater.inflate(R.layout.row, null); 

Könnte jemand bitte helfen Sie mir zu verstehen, was falsch ist.

Antwort

52

Wie sieht Ihr XML in der Layoutdatei aus? Wenn Sie einfach

<ViewPager 
    android:layout_width="..." 
    android:layout_height="..." /> 

Ihre Anwendung gesetzt wird abstürzen, weil ViewPager nicht im Kern SDK-Paket mit anderen Widgets befindet, ist es in der Support-Bibliothek. Sie müssen den vollständig qualifizierten Namen setzen

<android.support.v4.view.ViewPager 
    android:layout_width="..." 
    android:layout_height="..." /> 

Auch, wie andere erwähnt haben, sicherstellen, dass die Support-Bibliothek JAR ordnungsgemäß in Ihrem Projekt enthalten ist.

HTH

+0

Ja, total vergessen. Habe es geändert und jetzt bin ich beim nächsten Fehler. ._. danke aber –

+1

Das reparierte das gleiche Problem, das ich hatte, vielen Dank! – Kyle

+0

Danke, gut gemacht! +1 –

2

Ich denke, Sie haben ein paar zu viele super Präfixe dort.

Try this:

@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.main); 

    this.myAdapter = new StockPageAdapter(this); 
    this.myPager = (ViewPager)findViewById(R.id.pager); 
    this.myPager.setAdapter(myAdapter); 
} 

Stellen Sie außerdem sicher, dass die android-support-v4.jar in einem Verzeichnis namens libs (die in Ihrem Projekt und auf dem gleichen Niveau wie res und src und assets sein soll). Dies ist eine müssen jetzt ab ADT 17 (IIRC). Erstellen Sie einfach dieses Verzeichnis, legen Sie die .jar-Datei dort hin und Eclipse kümmert sich um den Rest. Sie müssen es nicht manuell zum Build-Pfad hinzufügen oder irgendetwas hinzufügen.

+0

Ja, es ist schon da drin. Der zweite Super ist überflüssig, aber ich habe ihn rausgenommen und bekomme immer noch das Gleiche. –