1

저는 현재 세 가지 다른 레이아웃을 부드럽게 뒤집는 viewpager를 구현했습니다. 모두 잘 작동합니다. 문제는 레이아웃 내의 요소에 액세스하려고 할 때 발생합니다. 어디서부터 시작해야할지 모르십니까? viewflipper도 이것을 할 수 있습니까? 나는 그것이 시장 거래 등에서 이루어지기 때문에 그렇게 추측합니까?Android : Viewpager 또는 Viewflipper?

활동 :

@Override 
     public void onCreate(Bundle savedInstanceState) { 
      super.onCreate(savedInstanceState); 
      setContentView(R.layout.main); 

      //pagerviwer 

      MyPagerAdapter adapter = new MyPagerAdapter(); 
      ViewPager myPager = (ViewPager) findViewById(R.id.myfivepanelpager); 
      myPager.setAdapter(adapter); 
      myPager.setCurrentItem(1); 

PageAdapter :

class MyPagerAdapter extends PagerAdapter { 

    public int getCount() { 
     return 3; 
    } 

    public Object instantiateItem(View collection, int position) { 

     LayoutInflater inflater = (LayoutInflater) collection.getContext() 
       .getSystemService(Context.LAYOUT_INFLATER_SERVICE); 

     int resId = 0; 
     switch (position) { 
     case 0: 
      resId = R.layout.training_topics; 
      break; 
     case 1: 
      resId = R.layout.behaviour_topics; 

      break; 
     case 2: 
      resId = R.layout.tricks_topics; 
      break; 
     } 

     View v = inflater.inflate(resId, null); 

     ((ViewPager) collection).addView(v, 0); 

     return v; 
    } 

    @Override 
    public void destroyItem(View arg0, int arg1, Object arg2) { 
     ((ViewPager) arg0).removeView((View) arg2); 

    } 

    @Override 
    public boolean isViewFromObject(View arg0, Object arg1) { 
     return arg0 == ((View) arg1); 

    } 

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

예 : 나는 traning_topics.xml 내부 이미지 뷰에 액세스하려는 경우 예를 들어 말? 주요 활동을 통해이 작업을 수행하면 충돌이 발생합니다.

답변

4

나는 이것 또한 경험하고있다. 레이아웃을 참조 할 때 null 포인터에 액세스하려고하므로 예외가 발생합니다. 여기 내가 찾은 해결책은 다음과 같습니다

Android ViewPager findViewById not working - Always returning null

당신이 먼저 당신이 instantiateItem(View collection, int position) 방법 내에서 원하는보기를 팽창해야 나타납니다. 그런 다음 findViewById을 호출하여 초기화해야합니다.

레이아웃의 루트 노드와 액세스하려는 특정 위젯 모두에 대해이 작업을 수행해야합니다. 나는이 해결책을 입증하려고 노력할 것이지만, 이해되는 것처럼 보인다. 유일한 예측 가능한 문제점은이 메소드 외부에서 뷰 위젯을 조작하려는 경우입니다.

ViewPager는 비교적 새로운 기능이며, 향후 Android Dev Team이 변경/개선 될 것으로 생각됩니다. 이게 도움이 되었으면 좋겠네.

+0

정확하게 맞습니다! 완벽하게 말하면 나중에이 코드를 시도해보고 알려 드리겠습니다! 감사! – Jonno