2009-09-10 103 views
2

我需要創建沒有XML的視圖。我通過視圖的getID方法檢索視圖ID,但獲得ResourceNotFoundException。我試圖用來修復這個ID爲setID的方法,但它不再工作。沒有xml的Android視圖

+3

請詳細說明一下,粘貼一些代碼,解釋什麼ID是你談論... – 2009-09-10 11:13:55

+0

完全同意,讓我們看看一些代碼,然後我們可以提供幫助。 – 2009-09-17 12:51:07

回答

1

如果您還沒有宣佈你的看法,並在佈局XML文件放在ID就可以了,你不能用

findViewById(int)

如果沒有XML創建視圖檢索它,你應該對其進行管理沒有資源ID。您只需創建視圖並命名它,然後使用該名稱來操作它。

您可以隨時將其引用到其他類,或者通過創建它的類來訪問它。

但是,你想不要聲明它在XML?通常,當你開始一個項目時,你看不到你如何用XML佈局做些什麼,並選擇以編程方式創建大多數視圖。在您完成項目之前,或者收集更多經驗後,幾乎所有情況下,您都會發現您可以使用XML完成此項任務。

+0

不幸的是,我不能使用XML佈局...實施的原因... 我的問題是,我想使用一個ListView填充ArrayAdapater螞蟻的ArrayAdapter構造函數需要一個視圖ID! – Arutha 2009-09-11 07:36:00

+0

那麼,在這種情況下,請使用View類的setId(int)方法。 – 2009-09-11 09:44:19

+0

這是我做的,但我在運行時得到一個ResourceNotFoundException – Arutha 2009-09-11 14:51:59

0

如果您嘗試打印視圖的getId(int)是否會得到有效的ID?

嘗試在正確的上下文中使用findViewById(int)yourContext.findViewById(int);

+0

是的,我獲得我在setID方法中指定的id,但findViewByID返回一個異常(ResourceNotFound) – Arutha 2009-09-18 08:12:40

+0

嘗試使用yourActivity.findViewById(int);或者yourActivity.getBaseContext()。findViewById來查找視圖。 如果這不起作用,我認爲你必須對創建的視圖進行引用,以便你立即看到視圖 – Thys 2009-09-18 12:34:43

1

我認爲問題在於。 當您撥打findViewById()時,它會在顯示樹中搜索該視圖。因此,要從樹中獲取視圖,您應該已經使用函數addView()將視圖添加到樹中。如果你沒有這樣做,它可能無法在樹中找到視圖。

0

很簡單。

lv = new ListView(this); lv.setId(android.R.layout.simple_list_item_1);

SimpleCursorAdapter ca = new SimpleCursorAdapter(this, android.R.layout.simple_list_item_1, c, from, to);