0

탭에서 다른 fragment으로 스 와이프하면 fragment을 새로 고침해야합니다.안드로이드에서 호출기 탭 조각을 새로 고치는 방법은 무엇입니까?

@Override 
public void onCreate(@Nullable Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setRetainInstance(true); 
} 


@Nullable 
@Override 
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { 
    super.onCreateView(inflater, container, savedInstanceState); 

    mBinding = DataBindingUtil.inflate(inflater, R.layout.manage_work_shop_act, container, false); 


    mBinding.layout.title.setText(getString(R.string.d_manage_my_staff)); 

    mBinding.tabs.setupWithViewPager(mBinding.viewpager); 
    setupViewPager(mBinding.viewpager); 

    mBinding.layout.nav.setVisibility(View.GONE); 
    mBinding.layout.navMenu.setVisibility(View.VISIBLE); 

    mBinding.layout.navMenu.setOnClickListener(view -> openDrawer()); 

    return mBinding.getRoot(); 
} 


private void setupViewPager(ViewPager viewPager) { 
    ViewPagerAdapter adapter = new ViewPagerAdapter(getChildFragmentManager()); 

    int limit = (adapter.getCount() > 1 ? adapter.getCount() - 1 : 1); 

    adapter.addFragment(new MechanicListFragment(), getString(R.string.d_manage_my_staff)); 
    adapter.addFragment(new MechanicNewFragment(), getString(R.string.new_frag)); 
    viewPager.setAdapter(adapter); 
    viewPager.setOffscreenPageLimit(limit); 

    adapter.notifyDataSetChanged(); 
} 

내 어댑터 내 fragment를 새로 고침 할 수있는 모든 방법을 시도이

public class ViewPagerAdapter extends FragmentPagerAdapter { 
private final List<Fragment> mFragmentList = new ArrayList<>(); 
private final List<String> mFragmentTitleList = new ArrayList<>(); 

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

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

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

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

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

같다. 탭을 스 와이프하거나 다른 탭을 클릭하면 표시되는 탭을 다시 새로 고침해야합니다. 현재 내 fragment은 새로 고침하지 않았습니다.

이 문제에서 우선 적용 해주세요.

+0

포스트 파편 이상의 조각 상태 호출기 어댑터를 사용하여 어댑터 코드 also.Try ment 어댑터를 사용하는 경우. – Anonymous

+1

이 링크를 확인하십시오 내 친구 https://stackoverflow.com/questions/32435250/android-viewpager-refresh-fragment –

+0

어댑터 클래스를 업데이트했습니다. – AngelJanniee

답변

0

adapdter에서 탭을 새로 고쳐야 할 때 조각 어댑터보다 조각 상태 호출기 어댑터를 사용해보십시오.

FragmentPagerAdapter는 어댑터에서 가져온 이전 데이터를 저장하고 FragmentStatePagerAdapter는 어댑터가 실행될 때마다 새 값을 사용합니다.

+0

변경했습니다. 공용 클래스 ViewPagerAdapter extends FragmentStatePagerAdapter { 작동하지 않습니다. – AngelJanniee

0

조각에 onHiddenChanged 방법이 있습니다.

호출하면 단편 isHidden()에 의해 반환되는 숨겨진 상태 (변경되면 단편 아웃 숨겨져 시작]. 이것은 이 단편 것과 상태가 변경 될 때마다 호출된다

. 당신의 탭 조각의 각각의 onHiddenChanged 방법을 무시하고 숨겨진되지 않는 경우 새로 고침을 예를 들면 다음과 같습니다.

class YourFragment extends Fragment { 

    @Override public void onHiddenChanged(boolean hidden) { 
     super.onHiddenChanged(hidden); 
     if (!hidden) { 
      //you can refresh here now 
     } 
    } 

}