类型已被弃用。

4

我正在使用一个AbsoluteLayout来布局Activity,并在xml文件中定义它。

我添加了这行代码,因为我试图动态地添加一系列按钮,但是我收到了以下警告。

private AbsoluteLayout layout = (AbsoluteLayout) findViewById(R.id.viewsaved); 

The type AbsoluteLayout is deprecated

代码似乎仍然正常工作,但我只是好奇知道这个警告为什么会出现?

谢谢任何帮助!


这意味着您不应再使用 AbsoluteLayout 。现在 FrameLayout 或 RelativeLayout 更为流行。 - EboMike
5个回答

12
在计算机软件或撰写程序的标准和文档中,"deprecation"一词用于指代已被取代并应该避免使用的软件功能。虽然被弃用的功能仍然存在于当前版本中,但其使用可能会引发警告消息,建议采用替代做法,并且"deprecation"可能表明该功能将来会被删除。功能被弃用而不是被删除,是为了提供向后兼容性,并给使用该功能的程序员时间来使其代码符合新标准。
来源: Wikipedia - Deprecation

简而言之,该函数现在可以使用,但很可能在未来版本中被删除。您需要找到替代方案。
AbsoluteLayout 建议您使用 FrameLayoutRelativeLayout 或自定义布局来替代它。

1

这是因为它已经被弃用了。无论如何,你都不应该使用 AbsoluteLayout,因为它之所以被弃用是有充分理由的。

原因在于它不允许自动处理多个屏幕尺寸,而这是 Android 中非常重要的一个方面。


我正在使用AbsoluteLayout,(因为它是唯一适合我的用例的布局,并且我们已经讨论了其他布局,但这只是浪费时间解决一个微不足道的问题,所以我们继续使用它。)现在,我们想要摆脱平台可能会删除它的可能性,因此,我们想要克隆代码并在我们的项目中保留副本。仅将代码复制到项目中是行不通的。(因为Android Studio会抱怨从View类继承的“mPaddingLeft”)这里有什么问题吗? - IcyFlame

0

已弃用的代码是指仍然在发布中以保持向后兼容性(即供旧程序使用),但已被更新和更好的代码所取代。

对于按钮列表,我建议使用ListViewLinearLayout,因为它们可以让您以列表格式添加项目。如果您需要使用AbsoluteLayout进行定位,则需要更有创意地使用LinearLayoutRelativeLayout


0

-1
在大多数Java库中,特别是非常流行的库中,维护者会非常努力地确保如果您使用旧版本的库编写代码,它不会在新版本中出现问题(向后兼容性)。
然而,有时他们会意识到自己犯了一些基本的错误,无法修复。在这种情况下,他们会弃用。这意味着“是的,它将像以前一样正常工作,但请注意:存在严重缺陷。”通常,他们会提供一个建议的替代方案。
另外,虽然我没有做过Android开发,但我做过很多Java GUI开发。很容易就会想:“我只需使用绝对定位即可,我没有问题来跟踪所有内容。”但随着程序的增长,确实很难掌控。现在,您必须重构大量代码,将其更改为更易于维护的布局。不要陷入这个陷阱:从一开始就使用好的布局管理器!

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接