2011-04-28 45 views
4

我對一個Activity使用了一個AbsoluteLayout,並將它定義在一個xml文件中。該類型已棄用

我添加了這行代碼,因爲我試圖動態添加按鈕列表,並且我收到以下警告。

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

The type AbsoluteLayout is deprecated 

該代碼仍然顯示正常工作,但我只是好奇,看看是否有人知道爲什麼會出現此警告?

感謝您的幫助!

+0

這意味着你不應該再使用AbsoluteLayout。 FrameLayout或RelativeLayout是新的熱點。 – EboMike 2011-04-28 23:16:39

回答

10

在計算機軟件或創作 程序標準和文檔, 術語棄用被應用於被取代 ,應該避免 軟件功能。雖然 棄用的功能留在 當前版本中,它們的使用可以提高 警告消息,建議 替代的做法,並棄用 可能表明該功能將 在未來刪除。特點是 棄用,而不是 去除,以提供向後兼容性 ,給誰 已經使用該功能的時候帶上 他們的代碼放到遵守 新標準的程序員。

Wikipedia - Deprecation

總之,該功能將工作現在,但很可能會在未來的版本中刪除。你會想找到一些東西來替代它。

AbsoluteLayout建議您使用FrameLayoutRelativeLayout或自定義佈局。

+0

非常好!非常感謝你! – korymiller 2011-04-28 23:20:02

1

它出現是因爲它已被棄用。無論如何,你不應該使用AbsoluteLayout,它有一個很好的理由被棄用。

原因是它不允許自動處理多種屏幕尺寸,這是Android的一個非常重要的方面。

+0

我正在使用AbsoluteLayout,(因爲它是唯一符合我的用例的佈局,而且我們對其他佈局有很多討論,但這只是浪費很多時間來解決已經解決的問題,所以我們正在繼續使用它。) 現在,我們希望擺脫平臺將其刪除的可能性,因此,我們希望克隆代碼並在項目中保留副本。只是將代碼複製到項目中不起作用。 (因爲Android Studio抱怨從'View'類繼承的'mPaddingLeft')。這裏有什麼問題嗎? – IcyFlame 2016-06-10 12:30:16

0

棄用的代碼是爲了向後兼容的原因(即用於舊程序)而仍然處於發行版中的代碼,但已被更新且更好的代碼所取代。

有關按鈕列表,我會建議您使用ListViewLinearLayout,因爲這些按鈕可讓您以列表格式添加項目。如果您需要使用AbsoluteLayout進行定位,那麼您需要更具創造性才能使用LinearLayout s和RelativeLayout s

-1

在大多數Java庫,尤其是非常受歡迎的,維護人員非常努力,以確保如果你讓代碼針對的是舊版本,它不會有一個較新的版本(向後兼容性打破庫。 )

但是,有時他們意識到他們犯了一般性錯誤,這對圖書館來說基本是不可或缺的。在這種情況下,他們不贊成。這意味着「是的,它會像以前一樣工作,但要警告:它存在嚴重的缺陷。」通常情況下,他們會按照建議的替代方案進行跟進

在相關說明中,雖然我還沒有做Android,但我做了很多Java gui開發。說「我只是用絕對定位,我沒有任何問題跟蹤任何事情」,這很誘人。但是隨着程序的增長,肯定會很難全面檢查。只有現在,你有大量的代碼必須重構,以將其更改爲更易維護的佈局。不要陷入這個陷阱:從一開始就使用一個好的佈局管理器!

相關問題