在相对布局中使用片段管理器时需要建议

Need advice in using Fragment Manager inside Relative Layout

我对在相对布局中使用片段管理器有疑问,我尝试了很多在这里找到的不同代码,但没有一个对我有帮助。我已经创建了一个从我的数据库中取出的问题列表,我可以从这个列表转移到第二页,并从我的数据库中获得完整的解释。 在我的代码中,getFragmentManager 亮起红色。
谁能帮我弄清楚并解决这个问题?

public class RuleButton extends RelativeLayout {
    private TextView namerul;
    private String nameRule = "";

    public RuleButton(Context context) {
        super(context);
        initComponent();
    }

    public  void initComponent() {
        LayoutInflater inflater = (LayoutInflater) getContext().getSystemService(Context.LAYOUT_INFLATER_SERVICE);
        inflater.inflate(R.layout.rulesbutton, this);
         namerul = (TextView) findViewById(R.id.ruleName);
        namerul.setOnClickListener(new View.OnClickListener() {

            @Override
            public void onClick(View v) {
                getFullRule();
            }
        });
        updateFields();
    }

    public void setRuleName(String name) {
        nameRule = name;
        namerul.setText(nameRule);
    }

    public void updateFields() {
        setRuleName(nameRule);

    }

    public void getFullRule () {

        Fragment fragment = null;
        Bundle args = new Bundle();
        args.putString("Rule",nameRule);
        fragment = new SomeRuleFragment();

        if (fragment != null) {
            fragment.setArguments(args);
            FragmentManager fragmentManager = getFragmentManager();
            fragmentManager.beginTransaction().replace(R.id.frame_container, fragment).commit();

        }
        else { // error in creating fragment
            Log.e("MainActivity", "Error in creating fragment"); }
    }


}

你的 class 扩展了 RelativeLayout
RelativeLayout 没有 getFragmentManager
将 activity 传递给您的 class 并尝试 activity.getFragmentManager
检查一下:FragmentManager from Context

我的决定是在构造函数中传递片段管理器:

    public RuleButton(Context context, FragmentManager _fragmentManager, boolean s) {
    super(context);
    fragmentManager = _fragmentManager;
    initComponent(s);
}

public void getFullRule () {
    Fragment fragment = null;
    Bundle args = new Bundle();
    args.putString("Rule", ruleID);
    fragment = new SomeRuleFragment();

    if (fragment != null) {
        fragment.setArguments(args);
        fragmentManager.beginTransaction().replace(R.id.frame_container, fragment)
                .addToBackStack("")
                .commit();
    }
    else {
        Log.e("MainActivity", "Error in creating fragment"); }
}