我的活动中有一个ListView。在点击列表项时,它会调用另一个活动。在该活动中,我实现了ViewPager和片段。
当它第一次加载onResume()时,onCreate()和onCreateView()方法被调用两次,如果我点击第一个列表项。 (即它加载第一个和第二个片段视图) 当我点击除了第一个之外的任何其他List片段然后它调用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;
}
}
答案 0 :(得分:0)
问题是为所有片段调用了onResume()方法,包括不可见的片段。 检查gorn的答案: How to determine when Fragment becomes visible in ViewPager
你必须覆盖
@Override
public void setUserVisibleHint(boolean isVisibleToUser) {
super.setUserVisibleHint(isVisibleToUser);
if (isVisibleToUser) {
// Your logic
}
并在那里做你的逻辑。