需要建议在相对布局中使用Fragment Manager

时间:2015-05-09 11:06:21

标签: fragment relativelayout fragmentmanager

你好我有一个关于在相对布局中使用片段管理器的问题,我尝试了很多不同的代码,我在这里找到但是没有它们帮助我。我创建了一个从我的数据库中获取的问题列表,我可以从这个列表转移到第二页,并从我的数据库中获得完整的解释。 在我的代码中,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"); }
}

}

2 个答案:

答案 0 :(得分:0)

你的班级延伸了RelativeLayout
RelativeLayout没有getFragmentManager
将活动传递给您的班级并尝试activity.getFragmentManager
看看这个:FragmentManager from Context

答案 1 :(得分:0)

我的决心是在Constructor中传递Fragment Manager:

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