2013-08-29 25 views
5

Có ai biết tại sao và tại sao điều này xảy ra?xem máy nhắn tin và danh sách xem

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) 

Những gì tôi đã làm là

  1. mở sherlockfragmentactivity của tôi với một cái nhìn pager

  2. nhấp vào mục trên listview bên trong ViewPager mà sẽ đưa tôi đến hoạt động thứ hai

  3. nhấn nút quay lại sẽ trả lại cho chúng tôi hoạt động với người xem trong đó.

Hành động đầu tiên trên ba bước là tốt, tuy nhiên khi tôi lặp lại bước thứ hai và bước thứ ba một thời gian nhanh, đôi khi điều đó sẽ gây ra sự cố đó.

Bất kỳ ý tưởng nào về cách khắc phục sự cố?

Đây là mã của tôi:

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

} 

// ===== ==== Giao diện cho hoạt động này trong đó có cái nhìn pager trong đó

<?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> 

/==== Layout cho mảnh của tôi trong giao diện pager ===

<?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

Nếu tôi hiểu, vấn đề không xuất hiện luôn, chỉ thỉnh thoảng bạn nhấn nút? –

+0

Nó luôn xảy ra, nhưng không phải lần đầu tiên bấm nó. Nó chỉ xảy ra đôi khi vào thứ hai, thứ ba hoặc nhiều hơn. –

+0

Cố gắng hiển thị 'ViewPager' trong' ListView'? –

Trả lời

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

dòng này dường như nói rằng bạn có thể đặt bố cục trên tiện ích và sau đó không thể truyền. Nhưng tôi không biết tại sao nó hoạt động khi nó nhấn lần đầu tiên.

Cố gắng chỉnh sửa tệp bố cục của bạn và thử lại.

+0

Tôi cập nhật bài đăng của mình để cho bạn biết bố cục của tôi. Tôi thấy không có gì đáng nghi hay sai. –

+1

Bằng cách nào đó tôi quản lý để giải quyết vấn đề này. Im không chắc chắn như thế nào nhưng tôi nghĩ rằng tôi đã giải quyết điều này bằng cách loại bỏ footerview từ listviews của tôi. –

16

trong trường hợp của tôi các vấn đề có liên quan đến việc thiết container gốc sai cho tiêu đề của listview trong khi lạm phát:

SAI MÃ gây ra lỗi:

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

ĐÚNG Mã sản phẩm:

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

như @Krishna Dewabrata gợi ý, vấn đề của ông có thể gây ra bằng cách làm điều gì đó tương tự với chân của listview

+4

Vừa lưu trong ngày – krossovochkin

Các vấn đề liên quan