0

我的活动中有一个 ListView。单击列表项时,它会调用另一个活动。在该活动中,我已经实现了 ViewPager 和片段。

当它第一次加载时 onResume() , onCreate() 和 onCreateView() 方法调用两次,如果我点击第一个列表项。(即它加载第一个和第二个片段视图)当我单击除第一个之外的任何其他列表片段然后它调用 onResume() 、onCreate() 和 onCreateView() 方法三次(即它加载前后并单击视图)

这绝对没问题,但我有谷歌分析代码,我必须只跟踪当前页面,这样我就可以把这个代码只加载到当前页面

我的问题是我的 googleAnalytics 代码第一次跟踪三到两页,即使用户没有浏览这些页面,如何避免这种情况?

My code is as below for fragment 


    public class MainListActivity extends Activity{
    public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    Log.v(TAG, "onCreate()");
    CustomFragmentPagerAdapter adapter = new CustomFragmentPagerAdapter();
    viewPager.setAdapter(adapter);


    }
    }

//code for fragment adapter 

    public class CustomFragmentPagerAdapter extends FragmentPagerAdapter {
    public CustomFragmentPagerAdapter(FragmentManager fm) {
            super(fm);

        }
    @Override
        public Fragment getItem(int pos) {
            CustomFragment customFragment = new CustomFragment();
            arrayList.add(customFragment);
            return customFragment;


    }




    @Override
        public int getCount() {
            // TODO Auto-generated method stub
            return arrayList.size();
        }

    }


//code for fragment

public class CustomFragment extends Fragment{
public CustomFragment() {
        super();

    }
@Override
    public void onResume() {
        super.onResume();
        Log.v(TAG, "onCreate -Resume");
    }
    @Override
        public void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            Log.v(TAG, "onCreate");
    }
@Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,Bundle savedInstanceState) {
        super.onCreateView(inflater, container, savedInstanceState);
        Log.v(TAG, "onCreateView");
return myAnyView;

}
}
4

1 回答 1

0

问题是所有片段都调用了 onResume() 方法,包括不可见的片段。在此处查看 gorn 的答案: 如何确定 Fragment 何时在 ViewPager 中可见

你必须覆盖

@Override
public void setUserVisibleHint(boolean isVisibleToUser) {
    super.setUserVisibleHint(isVisibleToUser);

    if (isVisibleToUser) {
        // Your logic
    }

并在那里做你的逻辑。

于 2013-09-25T06:43:16.203 回答