我需要我的片段在它们是活动片段时总是调用某个函数,所以我将它放在onResume()中,但它没有被调用。
片段A
@Override
public void onResume(){
super.onResume();
Log.d("clear state", " "+clear);
if(clear == true)
{
restart();
clear = false;
calculate();
}
}
我使用带有ViewPager的FragmentPagerAdapter切换片段
public class ScoutingFragSingle extends FragmentPagerAdapter{
@Override
public Fragment getItem(int index) {
Bundle data = new Bundle();
switch(index){
case 0:
TeamsFragment teamsFragment = new TeamsFragment();
data.putInt("current_page", index+1);
teamsFragment.setArguments(data);
return teamsFragment;
case 1:
data.putInt("current_page", index+1);
data.putInt("matchId", matchNum);
aFragment.setArguments(data);
return aFragment;
那么如何让片段调用它们的onResume()?
答案 0 :(得分:5)
我以前遇到过同样的问题。
创建一个新界面并由Fragment
s:
public interface OnPageSelectedListener {
void onPageSelected();
}
在父级活动实施中android.support.v4.view.ViewPager.OnPageChangeListener
并调用Fragment
方法,如下所示:
@Override
public void onPageSelected(int i) {
OnPageSelectedListener fragment = (OnPageSelectedListener ((PlaceListPagerAdapter)pager.getAdapter()).getFragment(i);
fragment.onPageSelected();
}
PS:新界面的名称及其方法有点令人困惑,所以要小心或更改它。
答案 1 :(得分:3)
覆盖Fragment.setUserVisibleHint。当setUserVisibleHint
true
调用您用于onResume
的相同逻辑时。
您可以在instantiateItem和setPrimaryItem中查看FragmentPagerAdapter
何时拨打setUserVisibleHint
。自4.2.1和 support-v4 以来适用于 android 。