16

sto ottenendo il seguente errore, che io non capisco ...ClassNotFoundException Android con 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 

Questo è il mio codice ...

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); 
} 

E 'un ListAdapter con un ViewPager per scorrere gli elenchi. Sto estendendo BaseAdapter e gonfiare la vista con questo codice ...

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

Qualcuno potrebbe aiutarmi a capire ciò che è sbagliato.

risposta

52

Che aspetto ha XML nel file di layout? Se si porta

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

L'applicazione va in crash a causa ViewPager non si trova nel pacchetto SDK core con altri widget, è nella libreria di supporto. Hai bisogno di mettere il nome completo

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

Inoltre, come altri hanno detto, assicurarsi che il JAR libreria di supporto sia correttamente incluso nel progetto.

HTH

+0

Sì, mi sono completamente dimenticato di questo. Modificato e ora sono al prossimo errore. ._. grazie però –

+1

Che ha risolto lo stesso problema che stavo avendo, grazie mille! – Kyle

+0

Grazie, ben fatto! +1 –

2

Penso che ci siano troppi prefissi super lì.

Prova questo:

@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); 
} 

Inoltre, assicurarsi che il android-support-v4.jar è in una directory chiamata libs (che dovrebbe essere nel progetto e sullo stesso livello res e src e assets). Questo è un deve ora a partire da ADT 17 (IIRC). Basta creare quella directory, rilasciare .jar e Eclipse si prenderà cura di tutto il resto, non c'è bisogno di provare ad aggiungerlo manualmente al percorso di build o altro.

+0

Sì, è già lì. Il secondo super è ridondante ma l'ho estratto e ho comunque ottenuto la stessa cosa. –