2016-03-11 30 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