2013-03-20 54 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

相关问题