2013-03-20 70 views
0

我試圖讓這個代碼工作:如何正確使用視圖和佈局對象的混合使用instantiateItem?

@Override 
    public Object instantiateItem(ViewGroup collection, int position) { 

     View v = null; 

     if(0 == position) { 
      String data = "<html><body>Hi there</body><html>"; 
      WebView wv = (WebView) findViewById(R.id.webView); 
      wv.loadData(data, "text/html", null); 
      v = wv; 
     } 
     else { 
      LayoutInflater vi = (LayoutInflater) cxt.getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
      v = vi.inflate(R.layout.editor, null); 
     } 

     collection.addView(v,0); 

     return v; 
    } 

我基本上模仿本文在這裏建一個水平刷卡觀點:http://android-developers.blogspot.com/2011/08/horizontal-view-swiping-with-viewpager.html

我得到一個崩潰時,我使用此代碼。我通過嘗試將佈局插入到ViewGroup中來收集我沒有正確執行的操作。有什麼建議麼?

03-20 14:49:55.037: ERROR/AndroidRuntime(25990): FATAL EXCEPTION: main 
    java.lang.NullPointerException 
    at com.EditorHyde.app.b.a(Unknown Source) 
    at android.support.v4.view.ViewPager.a(Unknown Source) 
    at android.support.v4.view.ViewPager.a(Unknown Source) 
    at android.support.v4.view.ViewPager.c(Unknown Source) 
    at android.support.v4.view.ViewPager.onMeasure(Unknown Source) 
    at android.view.View.measure(View.java:15518) 
    at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:4825) 
    at android.widget.LinearLayout.measureChildBeforeLayout(LinearLayout.java:1404) 
    at android.widget.LinearLayout.measureVertical(LinearLayout.java:695) 
    at android.widget.LinearLayout.onMeasure(LinearLayout.java:588) 
    at android.view.View.measure(View.java:15518) 
    at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:4825) 
    at android.widget.FrameLayout.onMeasure(FrameLayout.java:310) 
    at android.view.View.measure(View.java:15518) 
    at android.widget.LinearLayout.measureVertical(LinearLayout.java:847) 
    at android.widget.LinearLayout.onMeasure(LinearLayout.java:588) 
    at android.view.View.measure(View.java:15518) 
    at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:4825) 
    at android.widget.FrameLayout.onMeasure(FrameLayout.java:310) 
    at com.android.internal.policy.impl.PhoneWindow$DecorView.onMeasure(PhoneWindow.java:2176) 
    at android.view.View.measure(View.java:15518) 
    at android.view.ViewRootImpl.performMeasure(ViewRootImpl.java:1874) 
    at android.view.ViewRootImpl.measureHierarchy(ViewRootImpl.java:1089) 
    at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:1265) 
    at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:989) 
    at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:4351) 
    at android.view.Choreographer$CallbackRecord.run(Choreographer.java:749) 
    at android.view.Choreographer.doCallbacks(Choreographer.java:562) 
    at android.view.Choreographer.doFrame(Choreographer.java:532) 
    at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:735) 
    at android.os.Handler.handleCallback(Handler.java:725) 
    at android.os.Handler.dispatchMessage(Handler.java:92) 
    at android.os.Looper.loop(Looper.java:137) 
    at android.app.ActivityThread.main(ActivityThread.java:5041) 
    at java.lang.reflect.Method.invokeNative(Native Method) 
    at java.lang.reflect.Method.invoke(Method.java:511) 
    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:793) 
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:560) 
    at dalvik.system.NativeStart.main(Native Method) 

回答

1

你需要一個強制轉換來解決你的問題。變化:

collection.addView(v,0); 

到:

((ViewPager)collection).addView(v, 0); 
+0

我會嘗試。但不知道爲什麼會導致空指針異常。謝謝 – xrd 2013-03-20 22:10:48

+0

同樣的問題。這是一個運行時問題。您的修復將會是編譯時問題。 – xrd 2013-03-20 22:57:48

+0

嘗試更改if(0 ==位置)爲if(位置== 0)。 idk但0 ==位置似乎很奇怪。 – 2014-07-13 22:28:10

相關問題