【问题标题】:Strange problem overriding one of LinearLayout's constructors覆盖 LinearLayout 的构造函数之一的奇怪问题
【发布时间】:2011-04-16 01:20:33
【问题描述】:

出于某种原因,Eclipse 不喜欢对 super(context, attrs, defStyle) 的调用,但它对其他 super 调用感到满意。错误是“构造函数 LinearLayout(Context, AttributeSet, int) 未定义”。

我不认为问题出在这段代码本身,而是项目设置中的其他问题或其他问题,因为我从一个执行相同操作的示例中改编了几乎相同的代码,但对于相对布局,它在我的运行良好测试项目中的 Eclipse 设置。

请帮忙:)

public class MyLinearLayout extends LinearLayout {

public MyLinearLayout(Context context, AttributeSet attrs, int defStyle) {
    super(context, attrs, defStyle);
    myInit();
}

public MyLinearLayout(Context context, AttributeSet attrs) {
    super(context, attrs);
    myInit();
}

public MyLinearLayout(Context context, int checkableId) {
    super(context);
    myInit();
}

【问题讨论】:

    标签: java android


    【解决方案1】:

    根据these javadocs,错误是完全正确的。

    LinearLayout 没有那个构造函数。这是两个有效的构造函数:

    LinearLayout(Context context) 
    LinearLayout(Context context, AttributeSet attrs, Map inflateParams) 
    

    【讨论】:

    • 谢谢,那肯定能解释清楚!这引出了一个问题 - 为什么link 似乎与您发布的 javadocs 相矛盾?
    • 好问题,笑话;我想知道我自己 - 虽然这是另一件事 - android 开发网站(你的链接)似乎说第三个构造函数需要 11 级的 API。你安装了什么版本的 SDK/你的目标是什么?
    • 啊,好吧,我的目标是 7 级 :)
    • 抱歉 - 我的 google-foo 显然很弱。但是,在您链接到的页面上,在构造函数列表的最右侧,有一个指向相关构造函数的链接Since: API Level 11。单击它显示只有 Andriod 3.0 具有该构造函数。我敢打赌那不是你使用的版本。
    【解决方案2】:

    http://developer.android.com/reference/android/widget/LinearLayout.html

    根据开发者网站的说法,LinearLayout(context, attrs, defStyle) 构造函数仅在 API 版本 11 中可用,因此在早期版本中无法使用。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-05-10
      • 1970-01-01
      • 2023-03-22
      • 2012-09-30
      • 2014-12-20
      • 2015-10-23
      • 1970-01-01
      相关资源
      最近更新 更多