2013-04-21 4 views
1

ViewPager에서 며칠 동안 조각이 붙어 있습니다. 불행하게도 아무도 도움이 안됩니다! ViewPager 내부에서 일부 TextViews를 조각으로 설정하려고합니다. 내가 페이지를 인스턴스화 할 때 내 조각의 onActivityCreated 함수에서 TextViews를 설정하려고합니다. 어떤 게시물을 반환에 따라 POSITION_NONE getItemPosition 내 문제를 해결하기 때문에 모든보기를 삭제할 때마다 효율적으로 way.so 아니 instatiateItem (ViewGroup 컨테이너, int 위치) 변경할 때하지만 내가보기를 반환 할 때 내 조각이 발생합니다 :ViewPager의 instantiateItem에서 클래스 캐스트 예외가 발생했습니다.

여기
ClassCastException : android.Widget.LinearLayout cannot be cast to android.support.v4.app.Fragment 

내 instantiateItem (뷰 그룹 컨테이너, INT 위치) 함수는, 누군가가 내가이 예외를 관리 할 수있는 방법을 알고 않습니다입니까? 또는 ViewPager 내부의 조각에서 TextView를 새로 고칠 수 있습니까? 사전

@Override 
    public Object instantiateItem(ViewGroup container, int position) 
    { 
     LayoutInflater inflater = (LayoutInflater) mContext 
       .getSystemService(Context.LAYOUT_INFLATER_SERVICE); 

     if (position == 3) { 
      view = inflater.inflate(R.layout.projecttracking_detail_customerproject_fragment, null); 
      ((ViewPager) container).addView(view, 0); 
     } 
     else if(position == 2) { 
      view = inflater.inflate(R.layout.projecttracking_detail_projectinformation_fragment, null); 
      ((ViewPager) container).addView(view, 0); 
     } 


     return view; 

    } 
+0

프래그먼트가있는'ViewPager'에 대해 이야기하지만 인스턴스화 메소드에서 레이아웃을 확장하기 위해 어댑터를 확장합니까?!?! 사용자는 도울 것입니다. 그러나 그 이전의 질문에서 말도 안되는 긴 이름을 사용하지 않음으로써 더 쉽게 만들 수 있습니다. – Luksprog

+0

@Luksprog : 당신의 의견을 말씀 드리 자면, 필자는 FragmentPagerAdapter에서 InstantiateItem을 재정의했습니다. 필자는 전에 ListPragment.the 항목에서 ViewPager 내부의 Fragment에있는 textView를 설정하려고합니다. 문제는 ViewPager를 새로 고치는 것입니다. 나는 여러 가지 방법을 시도했습니다 .Fragments 내가 Position_NONE 반환하지만 잘 Refreshs ViewPager 어댑터에서 InstantiateItem 시도 했으므로 조금 느린,하지만 난 어디서 잘못했는지 모르겠다? –

+0

@Luksprog : 더 많은 정보가 필요하면 내 글을 편집 할 수 있습니다! 도와 주셔서 감사합니다. –

답변

1

에서 감사합니다 당신이 조각은 당신이 돌아 instantiateItem()을 재정의 할 수 없습니다 ViewPager 기반이 경우 그 반환 된 객체는 나중에 Fragment처럼 취급 될 것이다 View (예외가 당신을 말하고 무엇을).

원하는 부분을 완전히 이해하지 못했기 때문에 조각에서 일부보기 (일부 조각?)를 업데이트하려는 경우 POSITION_NONE 옵션을 사용할 수 있습니다.

ViewPager에서 현재 저장된 조각을 업데이트하고 사용자가 해당 항목으로 스 와이프 할 때 다시 만들어 질 때 데이터 (onCreateView())에 대한 다른 쿼리를 허용 할 수도 있습니다. FragmentPagerAdapter 위해 현재 저장된 보이는 단편을 액세스하기 위해을 사용할 수

PageFragment pf = (PageFragment) getSupportFragmentManager().findFragmentByTag("android:switcher:" + R.id.theIdOfTheViewPager + ":" + viewPager.getCurrentItem()); 
pf.updateViews(); 

당신이 viewPager.getCurrentItem()하여 리턴 값을 수정하여 다른 두 저장된 프래그먼트 (가시 단편의 각 측면에 하나씩)을 얻을 수 -/+1; 새 데이터가 있는지 테스트하고 사용하는 경우 조각을 수정해야합니다 (onCreateView()).

FragmentStatePagerAdapter을 사용하는 경우 현재 저장된 조각을 가져 오는 방법도 있습니다.

+0

타이 당신의 도움과 대답을 위해, 나는 이미 POSITION_NONE (괜찮 았어) 반환하지만, 당신이 그것이 모든 조각을 재현하는 원인, 그래서 내 조각 전환 조금 느린있어. 내가 Fragmentpageradapter에 언급 한대로 활성 조각을하려고합니다 내 Views의 일부를 새로 고침. –

관련 문제