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