2016-01-17 2 views
1

Как вызвать FragmentManager в onMenuItemClick? Я хочу запустить диалог после того, как пользователь нажмет на элемент подменю.Можно ли вызвать FragmentManager из ActionProvider?

Я пытался использовать:

Activity activity = (Activity) mContext; 

Но это вызывает ошибки

java.lang.ClassCastException: android.view.ContextThemeWrapper не может быть приведен к android.app.Activity

public class StudentFilterActionProvider extends ActionProvider implements MenuItem.OnMenuItemClickListener { 
Context mContext; 

/** 
* Creates a new instance. 
* 
* @param context Context for accessing resources. 
*/ 
public StudentFilterActionProvider(Context context) { 
    super(context); 
    mContext = context; 
} 

@Override 
public View onCreateActionView() { 
    return null; 
} 

@Override 
public boolean hasSubMenu() { 
    return true; 
} 

@Override 
public void onPrepareSubMenu(SubMenu subMenu) { 
    // Only add item once, not every time the sub menu is clicked 
    if (subMenu.size() == 0) { 
     subMenu.add("Filter by status").setOnMenuItemClickListener(this); 
     subMenu.add("Filter by programme").setOnMenuItemClickListener(this); 
    } 
} 

@Override 
public boolean onMenuItemClick(MenuItem item) { 
    switch (item.getTitle().toString()) { 
     case "Filter by status": 
      StudentStatusDialogFragment studentStatusDialogFragment = new StudentStatusDialogFragment(); 
      // I want to get FragmentManager here to launch a dialog 
      return true; 
     case "Filter by programme": 
      return true; 
    } 
    return false; 
} 

ответ

0

Почему бы не просто изменить код на

Activity mContext; 

/** 
* Creates a new instance. 
* 
* @param context Context for accessing resources. 
*/ 
public StudentFilterActionProvider(Activity context) { 
    super(context); 
    mContext = context; 
} 
+0

Даже если я еще не смог вызвать getFragmentManager –

+0

Затем создайте свой контекст типа 'FragmentActivity'. Проверьте этот ответ http://stackoverflow.com/a/21249790/4795214 –

+0

Это не имеет никакого значения, FragmentActivity используется для поддержки .v4 –

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