是否可以从ActionProvider调用FragmentManager?

时间:2016-01-17 06:47:57

标签: android android-fragments fragmentmanager

如何在onMenuItemClick中调用FragmentManager? 我想在用户点击子菜单项后启动一个对话框。

我试过用:

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;
}

}

1 个答案:

答案 0 :(得分:0)

为什么不将代码更改为

Activity mContext;

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