2011-06-01 99 views
1

我有一個xml文件,現在有一個LinearLayout內的TableLayout。在TableLayout中有帶按鈕的TableRows。在我的Java代碼中,我爲每個按鈕做了一個setOnClickListener。動態視圖與一個靜態xml

問題是我有幾個像這樣的XML文件是完全一樣的,除了在xml中不同按鈕的ID和文本的不同。

所以一個文件時,它會

<Button android:id="@+id/one" android:text="one" /> 
<Button android:id="@+id/two" android:text="two" /> 

和另一個文件時,它會

<Button android:id="@+id/three" android:text="three" /> 
<Button android:id="@+id/four" android:text="four" /> 

在Java中,一個開關/ case語句的一個部分,我有這樣的情況:

setContentView(R.layout.a); 
Button bOne = (Button) findViewById(R.id.one); 
Button bTwo = (Button) findViewById(R.id.two); 

和另一個我:

setContentView(R.layout.b); 
Button bThree = (Button) findViewById(R.id.three); 
Button bFour = (Button) findViewById(R.id.four); 

冗餘會超過兩個xml文件,這只是一個示例。

有沒有辦法做到這一點,並沒有多個佈局文件,但要在一個佈局文件中完成這一切? xml文件完全一樣,但是對於按鈕的id和文本部分。

我真的不在乎這是如何完成的 - 在Java中,在XML中,或是。這只是我偶爾對佈局進行微小的調整,並且不想繼續調整每個文件的佈局完全相同,但是對於按鈕ID和文本。我想調整一次佈局,並在更改佈局時使其適用於所有佈局。如果我必須將整個佈局文件放在Java中,那就沒問題。

回答

1

只保留一個xml文件(a.xml)。說這兩個按鈕的ID是id1id2。使用setContentView(R.layout.a);。接下來聲明2個按鈕說b1b2。設置爲b1 = (Button) findViewById(R.id.id1)b2 = (Button) findViewById(R.id.id2)。把setOnClickListener換成開關盒中的按鈕

+0

啊,這個工作非常好。我把id改成了像你所說的那樣的通用的,並且在Java中聲明瞭通用的。我也在Java中做了setText以及按鈕。它完美的作品。我想這就是我今後要做的事情 - 在xml文件中靜態佈局的東西,如果它們中的任何東西都是動態的,我會標識它並執行Java代碼中的所有動態操作。謝謝! – 2011-06-01 15:45:26

0

如果它總是隻有那兩個按鈕,你可以有一個變量記錄一個任意的int值,代表你在哪個屏幕上。保持相同的按鈕,更改它們的文本/佈局參數,並在OnClick()方法上測試該變量以查看您正在使用的屏幕。