0

안녕하세요!

아래 TabMenu에 문제가 있습니다. 아래에 GIF가 게시되어 있는데 작동 방식이 올바르게 작동하지 않습니다. 이 코드에서 작동하는 방법
:
탭 메뉴 android - 올바른 전화 단편이 아님

MainActivity (ViewPager, TabsLayout) -> FragmnetAdapter
의이어야 어떻게
(탭 레이아웃 용) : "홈"(HomeFragment), "역사"(HistoryFragment) "장소"(PlacesFragment)
지금 경우에 그것의 시작 "홈", "Hstory"전화 "장소"
"홈"하지만 및 전화 "역사"를 시작 그러나 코드에서 내가 볼 didnt는 몇 가지 문제는 당신이 나를 도울 수 있습니다, :) 제발 여기
Show's problem


코드입니다 :
MainActivity :

public class MainActivity extends AppCompatActivity { 

@BindView(R.id.appToolbarMainTabs) 
Toolbar appToolbar; 
@BindView(R.id.tabLayoutTabs) 
TabLayout tabs; 
@BindView(R.id.viewPager) 
ViewPager viewPager; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 
    ButterKnife.bind(this); 
    setSupportActionBar(appToolbar); 
    setupViewPager(viewPager); 
    tabs.setupWithViewPager(viewPager); 
} 

// Add Fragments to Tabs 
private void setupViewPager(ViewPager viewPager) { 
    FragmentTabsAdapter adapter = new FragmentTabsAdapter(getSupportFragmentManager()); 
    adapter.addFragment(new HomeFragment(), getString(R.string.home_tab)); 
    adapter.addFragment(new HistoryFragment(), getString(R.string.history_tab)); 
    adapter.addFragment(new PlacesFragment(), getString(R.string.places_tab)); 
    viewPager.setAdapter(adapter); 
}} 


FragmentAdapter :

public class FragmentTabsAdapter extends FragmentPagerAdapter { 

private final List<Fragment> mFragmentList = new ArrayList<>(); 
private final List<String> mFragmentTitleList = new ArrayList<>(); 

public FragmentTabsAdapter(FragmentManager manager) { 
    super(manager); 
} 

@Override 
public Fragment getItem(int position) { 
    return mFragmentList.get(position); 
} 

@Override 
public int getCount() { 
    return mFragmentList.size(); 
} 

@Override 
public CharSequence getPageTitle(int position) { 
    return mFragmentTitleList.get(position); 
} 

public void addFragment(Fragment fragment, String title) { 
    mFragmentList.add(fragment); 
    mFragmentTitleList.add(title); 
}} 



홈 & 역사 & PlaceFragment 난 그렇게 생각 :)
감사를 많이 필요로하지 않습니다! :)

+0

'PlacesFragment'에서 ProgressDialog를 표시한다고 가정합니다. PagerAdapter가 작동하는 방식은 다음에 스 와이프 할 수있는 조각을 미리로드하므로 'HistoryFragment'로 이동하면 'PlacesFragment'도 생성됩니다. ProgressDialog는 더 이상 사용되지 않는 동작 패턴이므로 View에 ProgressBar를 인라인으로 배치 한 다음로드가 완료된 후 뷰를 전환하는 것이 가장 좋습니다. – AChez9

+0

@ AChez9 예, 맞습니다.하지만 인라인 ProgressBar를 사용하고 싶지 않습니다. 제대로 이해한다면, 그것이 tabMenu의 올바른 작업이라는 것을 슬프게 생각합니까? 내 코드에는 몇 가지 문제가 없다? –

답변

1

탭과 ViewPager이 확인되어, 항상 적어도 이전과 미리로드 다음 조각.

조각이 표시되고 정보를로드하는 중일 때만 대화 상자를 표시 할 수 있습니다.

@Override 
public void setUserVisibleHint(boolean isVisibleToUser) { 
    super.setUserVisibleHint(isVisibleToUser); 
    if (isVisibleToUser) { 
    if (fragmentIsLoadingInfo()) { // implement this 
     showLoading(); // implement this 
    } 
    } 
} 

또한 일어나고있는 당신은, 예를 들어, 모든 세 개의 조각을 한 번에로드 할 경우이 값을 업데이트하는 것을 이해하기 ViewPager의 setOffscreenPageLimit을 확인합니다. 그 수치심을 0으로 설정하면 여전히 1처럼 작동합니다.

+0

고마워, 내일 내가 그것을 시도합니다 :) 그리고 나는 새로운 정보를 쓸 것입니다! –