3

내 조각에 다음 코드가 있습니다. 필자는 기본적인 뷰 호출기 예제에서이 작업을 가져 와서 작업중인 프로젝트를 테스트하기 위해이를 조각으로 때렸다.내 viewpager가 단편에서 작동하지 않는 이유는 무엇입니까?

ACtionBarSherlock 및 viewPagerIndicator 라이브러리를 사용하고 있습니다. 아래의 조각에는이 예제에서 간단한 제목 문자열 사이를 스 와이프해야하는 viewPager가 있습니다.

활동에서 ViewPager 및 ViewPagerIndicator를 사용하여 예제를 시도했지만 아무런 문제가 없습니다. 그러나 두 번째는 그것을 조각에 넣었습니다. 붐, 아무것도 아니지만 검은 화면 ... 오류 없음, 그냥 검은 색 화면 ... 나는 팽창해야하거나 레이아웃을 잘못 또는 뭔가에 액세스해야한다고 생각합니다 ... 아이디어가 있습니까?

public class TestFragment extends SherlockFragment { 

    //~Constants---------------------------------------------- 


    //~Data Fields-------------------------------------------- 

    //~Constructors-------------------------------------------- 
    @Override 
    public void onCreate(Bundle savedInstanceState) { 

     //Setup view 
     super.onCreate(savedInstanceState); 
     View view = onCreateView(getLayoutInflater(savedInstanceState), null, savedInstanceState); 

     ViewPagerAdapter adapter = new ViewPagerAdapter(this.getSherlockActivity()); 
     ViewPager pager = 
      (ViewPager)view.findViewById(R.id.free_time_day_pager); 
     TitlePageIndicator indicator = 
      (TitlePageIndicator)view.findViewById(R.id.titles); 
     pager.setAdapter(adapter); 
     indicator.setViewPager(pager); 
    } 

    @Override 
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { 

     View view = inflater.inflate(R.layout.free_time_fragment_layout, null, false); 
     return view; 
    } 

    //~Methods------------------------------------------------- 
} 

답변

3

망가 호출 onCreateView 잘못 :

여기에 코드입니다.

onCreateViewFragment 수명주기를 처리하기 위해 FragmentManger에 의해 호출되는 재정의 된 메서드입니다. 당신이 FragmentPagerAdapter를 사용하는 경우

private ViewPager mViewPager; 
private TitlePagerIndicator mIndicator; 

// Called first 
@Override 
public void onCreate(Bundle savedInstanceState) { 
    //Setup view 
    super.onCreate(savedInstanceState); 
} 

// Called second 
@Override 
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { 

    View view = inflater.inflate(R.layout.free_time_fragment_layout, null, false); 
    return view; 
} 

// Called third 
@Override 
public View onViewCreated(View v){ 
    super.onViewCreated(v); 
    mViewPager = (ViewPager) v.findViewById(R.id.free_time_day_pager); 
    mIndicator = (TitlePageIndicator)v.findViewById(R.id.titles); 

} 


public void onActivityCreated(Bundle bdl){ 
    super.onActivityCreated(bdl); 
    ViewPagerAdapter adapter = new ViewPagerAdapter(getSherlockActivity()); 
    mViewPager.setAdapter(adapter); 
    mIndicator.setViewPager(pager); 
} 

또한 당신이 ViewPagerFragment, 그 조금 까다로운을 만들 수 있지만, 약 Fragment 수명주기 here 너무 읽기이 gist.

를 참조하는 특별한 방법을 필요로주의해야합니다.

환호

+0

!!! 너는이 조각 사업에 내 눈을 열었다! 정말 고맙습니다! 이제는 내 애플리케이션에서이 전략을 구현하고 추한 모습을 멈출 수 있습니다! – Ethan

+0

앞으로가는 길이므로 사용하시기 바랍니다. 휴대 전화 및 태블릿 레이아웃을 훨씬 쉽게 만들 수 있습니다. 또한 Dialogs에도 사용하면 대화 수명주기를 훨씬 쉽게 유지할 수 있습니다. https://developer.android.com/reference/android/app/DialogFragment.html#AlertDialog –

0

사용하십시오.

compile 'com.android.support:appcompat-v7:23.0.1' 

나를 위해 작동합니다.

+2

이 코드는 질문에 대답 할 수 있지만, _why_ 및/또는 _how_에 대한 추가 컨텍스트를 제공하면 질문에 대한 답변이 크게 향상 될 것입니다. 장기 값. 대답을 [편집]하여 설명을 추가하십시오. –

+0

내 질문은 이전 일자인데,이 질문이 오늘의 도구에 대해 답변 된 것을 알게되어 기쁩니다! – Ethan

관련 문제