2013-08-29 71 views
5

有谁知道如何以及为什么会发生这种情况?查看传呼机和列表视图

java.lang.ClassCastException: android.support.v4.view.ViewPager$LayoutParams cannot be cast to android.widget.AbsListView$LayoutParams 
at android.widget.ListView.clearRecycledState(ListView.java:519) 
at android.widget.ListView.resetList(ListView.java:506) 
at android.widget.ListView.layoutChildren(ListView.java:1540) 
at android.widget.AbsListView.onLayout(AbsListView.java:2296) 
at android.view.View.layout(View.java:14055) 
at android.view.ViewGroup.layout(ViewGroup.java:4604) 
at android.widget.LinearLayout.setChildFrame(LinearLayout.java:1655) 
at android.widget.LinearLayout.layoutVertical(LinearLayout.java:1513) 
at android.widget.LinearLayout.onLayout(LinearLayout.java:1426) 
at android.view.View.layout(View.java:14055) 
at android.view.ViewGroup.layout(ViewGroup.java:4604) 
at android.widget.FrameLayout.onLayout(FrameLayout.java:448) 
at android.view.View.layout(View.java:14055) 
at android.view.ViewGroup.layout(ViewGroup.java:4604) 
at android.support.v4.view.ViewPager.onLayout(ViewPager.java:1141) 
at android.view.View.layout(View.java:14055) 
at android.view.ViewGroup.layout(ViewGroup.java:4604) 
at android.widget.LinearLayout.setChildFrame(LinearLayout.java:1655) 
at android.widget.LinearLayout.layoutVertical(LinearLayout.java:1513) 
at android.widget.LinearLayout.onLayout(LinearLayout.java:1426) 
at android.view.View.layout(View.java:14055) 
at android.view.ViewGroup.layout(ViewGroup.java:4604) 
at android.widget.FrameLayout.onLayout(FrameLayout.java:448) 
at android.view.View.layout(View.java:14055) 
at android.view.ViewGroup.layout(ViewGroup.java:4604) 
at android.widget.LinearLayout.setChildFrame(LinearLayout.java:1655) 
at android.widget.LinearLayout.layoutVertical(LinearLayout.java:1513) 
at android.widget.LinearLayout.onLayout(LinearLayout.java:1426) 
at android.view.View.layout(View.java:14055) 
at android.view.ViewGroup.layout(ViewGroup.java:4604) 
at android.widget.FrameLayout.onLayout(FrameLayout.java:448) 
at android.view.View.layout(View.java:14055) 
at android.view.ViewGroup.layout(ViewGroup.java:4604) 
at android.view.ViewRootImpl.performLayout(ViewRootImpl.java:1992) 
at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:1813) 
at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:1112) 
at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:4472) 
at android.view.Choreographer$CallbackRecord.run(Choreographer.java:725) 
at android.view.Choreographer.doCallbacks(Choreographer.java:555) 
at android.view.Choreographer.doFrame(Choreographer.java:525) 
at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:711) 
at android.os.Handler.handleCallback(Handler.java:615) 
at android.os.Handler.dispatchMessage(Handler.java:92) 
at android.os.Looper.loop(Looper.java:137) 
at android.app.ActivityThread.main(ActivityThread.java:4898) 
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:1006) 
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:773) 
at dalvik.system.NativeStart.main(Native Method) 

我所做的是

  1. 打开我的sherlockfragmentactivity以期寻呼机

  2. 点击viewpager内部列表视图,将带我到第二个活动

  3. 项目

    按下返回按钮,将返回到viewpager中的活动。

在这三个步骤上的第一个动作是好的,但是当我重复第二步和第三步几次快,有时它会导致这个问题。

任何想法如何解决它?

这是我的代码:

import com.actionbarsherlock.app.SherlockFragmentActivity; 
import com.viewpagerindicator.PageIndicator; 
import com.viewpagerindicator.TitlePageIndicator; 

import ex.godofsmith.helper.LocationService; 

import android.content.Intent; 
import android.os.Bundle; 
import android.support.v4.view.ViewPager; 

public class RestoFragmentActivity extends SherlockFragmentActivity { 

    private Intent locationService; 

    private ViewPager _mViewPager; 
    private RestoVPAdapter _adapter; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_resto); 
     setTheme(R.style.Theme_Sherlock_Light_DarkActionBar); 

     //set location service 
     locationService = new Intent(this, LocationService.class); 
     //end location service 

     setUpView(); 
    } 

    @Override 
    public void onPause(){ 
     super.onPause(); 
     stopService(locationService); 
    } 

    @Override 
    public void onResume(){ 
     super.onResume(); 
     startService(locationService); 
    } 

    @Override 
    public void onDestroy(){ 
     super.onDestroy(); 
     //stopService(locationService); 
    } 

    private void setUpView(){ 

     _adapter = new RestoVPAdapter(getApplicationContext(),getSupportFragmentManager()); 

     _mViewPager = (ViewPager) findViewById(R.id.viewPager); 
     _mViewPager.setAdapter(_adapter); 
     _mViewPager.setCurrentItem(0); 
     _mViewPager.setOffscreenPageLimit(3); 

     PageIndicator mIndicator = (TitlePageIndicator)findViewById(R.id.indicator); 
     mIndicator.setViewPager(_mViewPager);  
    } 

} 

// ==================

import android.content.Context; 
import android.support.v4.app.Fragment; 
import android.support.v4.app.FragmentManager; 
import android.support.v4.app.FragmentStatePagerAdapter; 

public class RestoVPAdapter extends FragmentStatePagerAdapter { 
    //protected static final String[] CONTENT = new String[] { "Recommended", "Best", "Nearby", "Promo", "New"}; 
    protected static final String[] CONTENT = new String[] { "Nearby", "Promo", "New"}; 
    private Context _context; 
    private int mCount = CONTENT.length;  

    public RestoVPAdapter(Context context, FragmentManager fm) { 
     super(fm); 
     _context=context; 
    } 

    @Override 
    public Fragment getItem(int position) { 
     Fragment f = new Fragment(); 
     switch(position){ 
//  case 0: 
//   //f=RestoRecommendedActivity.newInstance(_context); 
//   break; 
//  case 1: 
//   //f=RestoBestActivity.newInstance(_context); 
//   break; 
     case 0: 
      f=RestoNearByActivity.newInstance(_context); 
      break; 
     case 1: 
      f=RestoPromoFragment.newInstance(_context); 
      break; 
     case 2: 
      f=RestoNewActivity.newInstance(_context); 
      break; 
     } 

     return f; 
    } 

    @Override 
    public int getCount() { 
     return mCount; 
    } 

    @Override 
    public CharSequence getPageTitle(int position) { 
     return RestoVPAdapter.CONTENT[position % CONTENT.length]; 
    } 

} 

// ===== ====布局的活性,其具有在图寻呼机它

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"  
    xmlns:app="http://schemas.android.com/apk/res-auto" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    android:orientation="vertical" 
    android:background="@drawable/background"> 

    <com.viewpagerindicator.TitlePageIndicator 
     android:id="@+id/indicator" 
     android:padding="10dip" 
     android:layout_height="wrap_content" 
     android:layout_width="fill_parent"   
     android:textColor="#FF000000" 
     app:footerColor="@color/greenslideup" 
     app:footerLineHeight="1dp" 
     app:footerIndicatorHeight="3dp" 
     app:footerIndicatorStyle="underline" 
     app:selectedColor="#FF000000" 
     app:selectedBold="true"/> 

    <ex.godofsmith.helper.CustomViewPager 
     android:layout_width="fill_parent" 
     android:layout_height="fill_parent" 
     android:id="@+id/viewPager" /> 

</LinearLayout> 

/====布局我的视图中的寻呼机片段===

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:orientation="vertical" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" > 

    <ListView 
     android:id="@+id/lvNearBy" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" > 
    </ListView> 

</LinearLayout> 
+0

如果我明白,问题并不总是出现,只是有时您按下按钮? –

+0

它总是发生,但不是第一次按下它。它只发生在第二,第三或更多。 –

+0

试图在'ListView'中显示'ViewPager'? –

回答

0
java.lang.ClassCastException: android.support.v4.view.ViewPager$LayoutParams cannot be cast to android.widget.AbsListView$LayoutParams 

这条线似乎是说你可能在一个小部件上放置了一个布局然后它不能被施放。 但我不知道为什么它在第一次按下时有效。

尝试编辑您的布局文件,然后重试。

+0

我更新我的帖子让你知道我的布局。我没有发现任何可疑或错误。 –

+1

不知何故,我设法解决这个问题。林不知道如何,但我认为我通过从列表视图中删除footerview来解决此问题。 –

16
在我的情况

而膨胀的问题涉及到设置错误根容器为ListView头:

错误的代码对引起错误:

transparentHeaderView = LayoutInflater.from(getActivity()).inflate(R.layout.transparent_header_view, activityContainer, false);

正确的代码:

transparentHeaderView = LayoutInflater.from(getActivity()).inflate(R.layout.transparent_header_view, listView, false);

@Krishna Dewabrata暗示,他的问题可能是由于做了类似于列表视图的页脚

+4

刚刚救了一天 – krossovochkin

相关问题