Jake Wharton의 ViewPagerIndicator을 사용하여 스 와이프 할 수있는 탭을 만듭니다. 현재 나는 그것에서 4 개의 탭과 함께, 내 애플 리케이션에서 작동하도록 만들 수 있습니다. 하지만 분명히 각 조각은 페이지/탭을 변경할 때 다시 생성됩니다. 예를 들어, 탭 A에 있고 탭 C로 변경 한 다음 탭 A로 돌아 가면 A 탭의 단편이 이전 페이지를 페이지 앞으로 가져 오는 것이 아니라 다시 다시 작성됩니다.ViewPagerIndicator - 반환 될 때마다 조각에서 데이터를 다시로드하는 것을 피하는 방법
나는 도서관의 예를 따르려고한다. 여기처럼 내 코드는 모습입니다 :
private int mCount = TAB_TITLES.length;
public TestFragmentAdapter(FragmentManager fm) {
super(fm);
}
@Override
public Fragment getItem(int position) {
switch (position) {
case 0:
return UserInfoFragment.newInstance(action,user);
case 1:
return EventListFragment.newInstance(user.getUsername(), Constants.LIST_MINE, action);
case 2:
return EventListFragment.newInstance(user.getUsername(), Constants.LIST_FAVORITE, action);
case 3:
return EventListFragment.newInstance(user.getUsername(), Constants.LIST_ATTENDED, action);
}
return null;
}
@Override
public int getCount() {
return mCount;
}
@Override
public CharSequence getPageTitle(int position) {
return TAB_TITLES[position].toUpperCase(Locale.US);
}
위의 코드를 사용 ProfileViewPagerActivity
내부 클래스와 어댑터TestFragmentAdapter가
ProfileViewPagerActivity
여기private static final String[] TAB_TITLES = new String[] { "Info",
"Personal Event", "Favorite", "Attending" };
TestFragmentAdapter mAdapter;
ViewPager mPager;
PageIndicator mIndicator;
int action;
User user;
@Override
protected void onCreate(Bundle arg0) {
// TODO Auto-generated method stub
super.onCreate(arg0);
setContentView(R.layout.simple_tabs);
action = getIntent().getIntExtra(Constants.LOAD_WHAT, Constants.LOAD_MY_PROFILE);
user = (User) getIntent().getSerializableExtra(Constants.USER);
mAdapter = new TestFragmentAdapter(getSupportFragmentManager());
mPager = (ViewPager) findViewById(R.id.pager);
mPager.setAdapter(mAdapter);
mIndicator = (TabPageIndicator) findViewById(R.id.indicator);
mIndicator.setViewPager(mPager);
}
하고, 이 조각은 내가 다시 만들 때마다 변경 탭. TestFragmentAdapter 생성자 안에있는 각 조각에 대해 newInstance() 메서드를 호출하고 getItem 메서드에 이미있는 조각 개체를 호출하는 등 다른 방법을 시도합니다. 여전히 작동하지 않습니다.
이미 시도한 또 다른 해결책은 각 조각에 saveInstanceState를 저장하는 것입니다. 그러나 역시 작동하지 않습니다. 내가 놓친 게 있니? 미리 감사드립니다.
편집
미안 해요, 내 실수, 내가 그것을 관련 질문에 "조각을 다시 인스턴스화"아니에요 같아요. 더 많은 디버깅을 한 후, 조각 만 FragmentAdapter에 표시된 경우 데이터 만 다시로드된다는 것을 알았습니다. 내 조각, 내가 OnCreateView 메서드에서 웹 서버에서 데이터를로드합니다. 안드로이드 워드 프로세서에서 내가이 문제를 해결하기 위해 OnCreate 메서드에서 필요한 데이터를로드해야한다고 생각합니다. 맞습니까? 감사.
내 업데이트 된 질문에 따라, 나는 아래의 그의 답변에서 @ 네오 주석을 해결 답변입니다. – bangandi