2015-01-30 2 views
0

Я использовал expandablenavigation drawer.Определить, какой фрагмент в настоящее время отображается

Это деятельность, в которой FrameLayout. Как я могу определить, какой вид Fragment в настоящее время отображается пользователю.

В этом упражнении много imageButton поэтому diff fragment Мне нужно выполнить различное событие, так что imageButton onclick Я определяю, какой фрагмент в настоящее время отображается пользователю.

`

 <ImageView 
      android:background="@drawable/navigation_icon" 
      android:id="@+id/titleHeaderImageView" 
      android:layout_width="75dp" 
      android:layout_height="50dp" 
      android:layout_margin="5dp" 
      /> 

     <ImageView 
      android:layout_width="200dp" 
      android:layout_height="50dp" 
      android:layout_marginLeft="50dp" 
      android:layout_marginRight="5dp" 
      android:layout_marginTop="5dp" 
      android:src="@drawable/header" 
      android:id="@+id/wallHeader" /> 
     <ImageButton 
      android:id="@+id/btnActivityBack" 
      android:src="@drawable/prev" 
      android:layout_width="50dp" 
      android:layout_height="50dp" 
      android:layout_marginLeft="100dp" 
      android:layout_marginRight="5dp" 
      android:layout_marginTop="5dp"/> 
     <ImageButton 
      android:id="@+id/btnActivityWrong" 
      android:src="@drawable/no" 
      android:layout_width="50dp" 
      android:layout_height="50dp" 
      android:layout_marginLeft="50dp" 
      android:layout_marginRight="5dp" 
      android:layout_marginTop="5dp"/> 

     <ImageButton 
      android:id="@+id/btnActivityRight" 
      android:src="@drawable/yes" 
      android:layout_width="50dp" 
      android:layout_height="50dp" 
      android:layout_marginLeft="50dp" 
      android:layout_marginRight="5dp" 
      android:layout_marginTop="5dp"/> 

     <ImageButton 
      android:id="@+id/btnActivityEdit" 
      android:src="@drawable/edit" 
      android:layout_width="50dp" 
      android:layout_height="50dp" 
      android:layout_marginLeft="50dp" 
      android:layout_marginRight="5dp" 
      android:layout_marginTop="5dp"/> 
     <ImageButton 
      android:id="@+id/btnActivitySearch" 
      android:src="@drawable/search" 
      android:layout_width="50dp" 
      android:layout_height="50dp" 
      android:layout_marginLeft="50dp" 
      android:layout_marginRight="5dp" 
      android:layout_marginTop="5dp"/> 
     <ImageButton 
      android:id="@+id/btnActivityAdd" 
      android:src="@drawable/plus" 
      android:layout_width="50dp" 
      android:layout_height="50dp" 
      android:layout_marginLeft="50dp" 
      android:layout_marginRight="5dp" 
      android:layout_marginTop="5dp"/> 
     <ImageButton 
      android:id="@+id/btnActivityNext" 
      android:src="@drawable/next" 
      android:layout_width="50dp" 
      android:layout_height="50dp" 
      android:layout_marginLeft="50dp" 
      android:layout_marginRight="5dp" 
      android:layout_marginTop="5dp"/> 
     <ImageButton 
      android:id="@+id/btnActivitySetting" 
      android:src="@drawable/setting" 
      android:layout_width="50dp" 
      android:layout_height="50dp" 
      android:layout_marginLeft="50dp" 
      android:layout_marginRight="5dp" 
      android:layout_marginTop="5dp"/> 
</LinearLayout> 
<View 
    android:layout_width="match_parent" 
    android:layout_height="3dp" 
    android:background="@color/color2"/> 
</LinearLayout> 

<android.support.v4.widget.DrawerLayout 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    android:id="@+id/drawer_layout" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent"> 

    <!-- Drawer Content --> 

    <FrameLayout 
     android:id="@+id/content_frame" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     android:background="@color/color3" 
     android:layout_marginTop="0dp"/> 


    <!-- The navigation menu --> 

    <ExpandableListView 
     android:id="@+id/navigationExpandableListView" 
     android:layout_width="260dp" 
     android:layout_height="match_parent" 
     android:layout_gravity="left" 

     android:background="@color/ex_listview_background" > 
    </ExpandableListView> 
</android.support.v4.widget.DrawerLayout> 

`

ответ

0

Для определения того, какой фрагмент виден сейчас, Вы должны сохранить фрагмент имя в любой переменной строке при нажатии на ListView item.Each время при замене фрагмент вам нужно сохранить имя этого фрагмента в этой переменной.

0

Вы можете сделать, как следующее: контроль

String currentFragmentName; 

imageButton.setOnClickListener(new View.OnClickListener() { 
    @Override 
    public void onClick(View view) { 

     currentFragmentName = "Current fragment name"; 

    } 
}); 

Делая это, вы получите из которых fragment в настоящее время видна

0

Может быть, вам не нужно, чтобы получить текущий fragment.Just добавить событие обработчик в фрагменте классе, как следующее:

 view.findViewById(R.id.titleHeaderImageView).setOnClickListener(new View.OnClickListener(){ 

    swith(page){ 
    case:1 
     .... 
    case:2 
     .... 

    } 

} 

страница страница number.In общая, вы должны передать номер страницы фрагменту при создании it.For Например, класс фрагмент может использовать его функции для создания:

int page; 
    public static FirstFragment newInstance(int page, String title) { 
     FirstFragment fragmentFirst = new FirstFragment(); 
     fragmentFirst.page=page; 
     return fragmentFirst; 

} 
0

, когда вы показываете фрагмент, который вы должны поместить его в тег backstack как:

FragmentTransaction ft = getSupportFragmentManager().beginTransaction(); 
ft.setTransition(FragmentTransaction.TRANSIT_ENTER_MASK);  
ft.add(R.id.primaryLayout, fragment, tag); 
ft.addToBackStack(tag); 
ft.commit();  

сделать метод в базовой деятельности, как ниже и назовите его в своем фрагменте в методе onactivitycreated(), он вернет тэг фрагмента, и тогда вы можете использовать его.

public String getActiveFragment() { 
if (getSupportFragmentManager().getBackStackEntryCount() == 0) { 
    return null; 
} 
String tag = getSupportFragmentManager().getBackStackEntryAt(getSupportFragmentManager().getBackStackEntryCount() - 1).getName(); 
return tag; 
1

Чтобы найти текущий фрагмент

Fragment currentFragment = getFragmentManager().findFragmentById(R.id.content_frame); 

Это находит фрагмент в настоящее время добавляется к вашей FrameLayout (content_frame). Этого должно быть достаточно, но если вы хотите проверить, если это на самом деле видно, используйте следующее:

currentFragment.isVisible(); 

Документации для Fragment.isVisible() -

возвращающих если фрагмент в настоящее время виден для пользователя. Это означает, что: (1) был добавлен, (2) имеет вид, прикрепленный к окну, и (3) не скрыт.

Смежные вопросы