2014-12-04 148 views
0

我的文件具有與ViewPager下面的代碼 -

viewPager = (ViewPager) view.findViewById(R.id.HView); 
    adapter = new MyPagerAdapter(getActivity()); 
    viewPager.setAdapter(adapter); 

    linearLayout.getChildAt(0).setLayoutParams(new 
    LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT, 
    (int) (imgHeight * 1.5))); 

    linearLayout.setLayoutParams(new 
    LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT, 
    (int) (imgHeight * 1.5))); 

其中,

View android.view.ViewGroup.getChildAt(int index) 

public View getChildAt (int index) 
Added in API level 1 
Returns the view at the specified position in the group. 

我同一個類中的適配器 -

public class MyPagerAdapter extends PagerAdapter { 

     public MyPagerAdapter(Context context) { 
     } 

     @Override 
     public void destroyItem(View view, int arg1, Object object) { 
      try { 
       ((ViewPager) view).removeView((LinearLayout) object); 
      } catch (Exception e) { 
       e.printStackTrace(); 
      } 
     } 

     @Override 
     public void finishUpdate(View arg0) { 

     } 

     @Override 
     public int getCount() { 
      return views.size(); 
     } 

     @Override 
     public Object instantiateItem(View view, int position) { 

      View myView = views.get(position); 
      myView.invalidate(); 

      try 
      { 
       ((ViewPager) view).removeView(myView); 
       ((ViewPager) view).addView(myView); 
      } 
      catch(IllegalStateException e) 
      { 
       tap.getEntriesByRule(view); 
       e.printStackTrace(); 
      } 
      catch(ClassCastException e) 
      { 
       tap.getEntriesByRule(view); 
       e.printStackTrace(); 
      } 
      return myView; 
     } 

     @Override 
     public boolean isViewFromObject(View view, Object object) { 
      return view == object; 
     } 

     @Override 
     public void restoreState(Parcelable arg0, ClassLoader arg1) { 

     } 

     @Override 
     public Parcelable saveState() { 
      return null; 
     } 

     @Override 
     public void startUpdate(View arg0) { 

     } 

     @Override 
     public int getItemPosition(Object object){ 
      return POSITION_NONE; 
     } 
    } 

XML文件 -

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
     android:id="@+id/chartmain" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:background="#ffffff" 
    android:gravity="center_horizontal|center_vertical" 
    android:orientation="vertical" > 

    <LinearLayout 

     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:layout_weight="1" 
     android:orientation="vertical" > 

     <RelativeLayout 
      android:id="@+id/relative" 
      android:layout_width="fill_parent" 
      android:layout_height="fill_parent" 
      android:layout_marginLeft="5dp" > 


      <android.support.v4.view.ViewPager 
       android:id="@+id/HView" 
       android:layout_width="560dp" 
       android:layout_height="255dp" 
       android:layout_centerHorizontal="true" 
       android:layout_marginLeft="160dp" 
       android:layout_marginTop="110dp" 
       android:layout_marginBottom="80dp"> 


      </android.support.v4.view.ViewPager> 

      <TextView 
       android:id="@+id/totalHoursBottom" 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:layout_alignLeft="@+id/HView" 
       android:layout_marginLeft="550dp" 
       android:layout_marginTop="345dp" 
       android:textSize="14dp" 
       android:text="Total Hours" 
       android:textColor="#000000" /> 

      <TextView 
       android:id="@+id/textView3" 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:layout_alignParentLeft="true" 
       android:layout_alignTop="@+id/textView2" 
       android:text="Mid Night" 
       android:textSize="14dp" 
       android:textColor="#000000" /> 

     </RelativeLayout> 

    </LinearLayout> 

</LinearLayout> 

這是錯誤日誌 -

java.lang.ClassCastException: android.widget.LinearLayout$LayoutParams cannot be cast to android.support.v4.view.ViewPager$LayoutParams 
at android.support.v4.view.ViewPager.onMeasure(ViewPager.java:1319) 
at android.view.View.measure(View.java:15609) 
at android.widget.RelativeLayout.measureChildHorizontal(RelativeLayout.java:681) 
at android.widget.RelativeLayout.onMeasure(RelativeLayout.java:461) 
at android.view.View.measure(View.java:15609) 
at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:4916) 
at android.widget.LinearLayout.measureChildBeforeLayout(LinearLayout.java:1411) 
at android.widget.LinearLayout.measureVertical(LinearLayout.java:698) 
at android.widget.LinearLayout.onMeasure(LinearLayout.java:588) 
at android.view.View.measure(View.java:15609) 
at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:4916) 
at android.widget.LinearLayout.measureChildBeforeLayout(LinearLayout.java:1411) 
at android.widget.LinearLayout.measureVertical(LinearLayout.java:698) 
at android.widget.LinearLayout.onMeasure(LinearLayout.java:588) 
at android.view.View.measure(View.java:15609) 
at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:4916) 
at android.widget.FrameLayout.onMeasure(FrameLayout.java:310) 
at android.view.View.measure(View.java:15609) 
at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:4916) 
at android.widget.FrameLayout.onMeasure(FrameLayout.java:310) 
at android.view.View.measure(View.java:15609) 
at android.widget.LinearLayout.measureHorizontal(LinearLayout.java:1041) 
at android.widget.LinearLayout.onMeasure(LinearLayout.java:590) 
at android.view.View.measure(View.java:15609) 
at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:4916) 
at android.widget.FrameLayout.onMeasure(FrameLayout.java:310) 
at android.view.View.measure(View.java:15609) 
at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:4916) 
at android.widget.LinearLayout.measureChildBeforeLayout(LinearLayout.java:1411) 
at android.widget.LinearLayout.measureVertical(LinearLayout.java:698) 
at android.widget.LinearLayout.onMeasure(LinearLayout.java:588) 
at android.view.View.measure(View.java:15609) 
at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:4916) 
at android.widget.FrameLayout.onMeasure(FrameLayout.java:310) 
at com.android.internal.policy.impl.PhoneWindow$DecorView.onMeasure(PhoneWindow.java:2191) 
at android.view.View.measure(View.java:15609) 
at android.view.ViewRootImpl.performMeasure(ViewRootImpl.java:2165) 
at android.view.ViewRootImpl.measureHierarchy(ViewRootImpl.java:1249) 
at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:1443) 
at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:1139) 
at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:4879) 
at android.view.Choreographer$CallbackRecord.run(Choreographer.java:776) 
at android.view.Choreographer.doCallbacks(Choreographer.java:579) 
at android.view.Choreographer.doFrame(Choreographer.java:548) 
at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:762) 
at android.os.Handler.handleCallback(Handler.java:725) 
at android.os.Handler.dispatchMessage(Handler.java:92) 
at android.os.Looper.loop(Looper.java:153) 
at android.app.ActivityThread.main(ActivityThread.java:5299) 
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:833) 
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:600) 
at dalvik.system.NativeStart.main(Native Method) 
+0

想知道爲什麼downvote? – 2014-12-04 08:42:09

回答

4

如果添加ViewViewGroup與指定LayoutParamsLayoutParams必須嵌套類特定ViewGroup的。所以在你的情況下,你必須使用ViewPager#LayoutParams而不是LinearLayout#LayoutParams

+0

查看我的更新。我是否需要將它添加到我最近更新的代碼中的ViewGroup的'setLayoutParams'中? – 2014-12-04 08:40:53

+0

當您爲'LinearLayout'設置'LayoutParams'時,使用'ViewPager#LayoutParams'而不是'LinearLayout#LayoutParams'。 – 2014-12-04 08:45:16

+0

您可以將答案標記爲已接受?謝謝。 – 2014-12-04 09:30:35

相關問題