不允许访问构造函数

时间:2015-02-19 10:50:07

标签: java

您好,我在为应用程序创建自定义骨干应用程序时遇到此错误。它的作用是向其父构造函数发送一个目标容器,用于安装片段。自定义类只是零arg构造函数,并且超出了存储targetContainer的父级的整数。但是当我运行我的应用程序时,我得到一个运行时异常。

这是我的代码:

这是一个特定于我计划构建的应用的自定义类:

public class NoteActivity extends BackboneActivity 
{
    public NoteActivity()
    {
        super(R.id.fragmentContainer);
        addFragment(new NoteFragment());
    }

}

现在这里是骨干应用程序,所以我可以随意添加片段。我希望使用这个类对app和fragment进行动态控制:

public class BackboneActivity extends ActionBarActivity
{
    private FragmentManager fragmentManager;
    private int targetContainer = -1;

    public BackboneActivity(int target)
    {
        super();
        targetContainer = target;
    }

    protected boolean addFragment(Fragment fragment)
    {
        if(fragment == null) return false;

        fragmentManager.beginTransaction()
            .add(targetContainer, fragment)
            .commit();

        return true;
    }

    @Override
    protected void onCreate(Bundle savedInstanceState) 
    {
        super.onCreate(savedInstanceState);
        setContentView(targetContainer);

        fragmentManager = getSupportFragmentManager();
    }
}

我仍处于Android和Java的学习过程中,我有一些编程经验,所以我不太确定我一直缺少什么。

我得到的错误是不允许访问Constructor。这在技术上是否与此处描述不允许访问类的其他帖子不同?

我承认我感觉如此& & (& dumb with this error。

感谢。

1 个答案:

答案 0 :(得分:1)

你能不能这样做:

public NoteActivity()
{
    super();
    addFragment(new NoteFragment());
}

protected void onCreate(Bundle savedInstanceState) 
{
    super.onCreate(savedInstanceState);
    setContentView(targetContainer);
    // you will have to put a getter/setter in BackboneActivity or change access modifiers
    this.setTargetContainer(R.id.fragmentContainer); 
    fragmentManager = getSupportFragmentManager();
}