2016-03-11 32 views
-1

我在SDK中有一个包装器应用程序可能在导航抽屉中显示的片段。我想要从碎片本身中检测这个片段何时会被用户看到,用于跟踪目的。有什么办法可以做到吗?检测导航抽屉内部片段的可见性

+0

使用setUserVisibleHint方法知道你的分片何时对用户可见 –

+0

这是回调吗?我在片段中使用它,但没有收到回调? – Rahul

+0

是的,它是被覆盖的方法 –

回答

1
public class MyFragment extends Fragment { 

    private DrawerLayout mDrawerLayout; 

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

     View view = inflater.inflate(R.layout.my_fragment, container, false); 

     // walk up the view tree and look for the DrawerLayout 
     for (ViewParent parent = container.getParent(); parent != null; parent = parent.getParent()) { 

      if (parent instanceof DrawerLayout) { 

       mDrawerLayout = (DrawerLayout) parent; 
       mDrawerLayout.setDrawerListener(new DrawerLayout.SimpleDrawerListener() { 

        @Override 
        public void onDrawerOpened(View drawerView) { 
         onShown(); 
        } 

        @Override 
        public void onDrawerClosed(View drawerView) { 
         onHidden(); 
        } 

       }); 
       break; 
      } 
     } 

     return view; 
    } 

    @Override 
    public void onDestroyView() { 
     if (mDrawerLayout != null) { 
      mDrawerLayout.setDrawerListener(null); 
     } 
     super.onDestroyView(); 
    } 

    private void onShown() { 
     // ... 
    } 

    private void onHidden() { 
     // ... 
    } 
} 
+0

而不是使用容器(这是返回null)我用getView内onActivityCreated获得适当的视图层次结构。感谢您的回答。它帮助! – Rahul