你需要做出定義變量,他們將有類範圍廣:
public class Example extends Activity {
EditText txt1;
EditText txt2;
@Override
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
txt1 = new EditText(this);
txt2 = new EditText(this);
...
現在你的onClick功能將能夠看到txt1
和txt2
。
或者
既然你出現在一個LinearLayout中被創造了大量的txt1
和txt2
,你可以通過你的按鈕,其EditTexts參考:
do {
...
// EditText[] array = { txt1, txt2 };
// is the short version of
EditText[] array = new EditText[2];
array[0] = txt1;
array[1] = txt2;
showtxt.setTag(array);
showtxt.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
EditText[] array = (EditText[]) v.getTag();
String aaa = array[0].getText().toString();
String bbb = array[1].getText().toString();
Log.v("Example", aaa + " " + bbb);
}
});
} while(some condition)
這可能不是不理想的,但沒有任何進一步的背景下,我不能猜測你的最終目標。希望有所幫助!
最後建議
如果我們調用按鈕和兩個EditTexts一排,你可以存儲在一個ViewGroup中的每一行或它自己的觀點。假設您想爲每一行分配背景顏色:
View row = new View(this); // or this could be another LinearLayout
row.setBackgroundColor(0x0000ff);
// Create and add the Button and EditTexts to row, as in row.addView(showtxt), etc
...
linearLayout.addView(row);
showtxt.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
View row = v.getParent()
String aaa = ((EditText) row.getChildAt(1)).getText().toString();
String bbb = ((EditText) row.getChildAt(2)).getText().toString();
Log.v("Example", aaa + " " + bbb);
}
});
來源
2012-06-23 22:33:48
Sam
目標很簡單:創建新元素並添加參考新元素的click事件。我喜歡第二個解決方案,但我猜如果第一個解決方案可行? – albanx
@albanx我更新了我的答案。第一種解決方案需要每個「行」都有一個唯一的'txt1','txt2',因爲你正在使用一個循環,所以需要很多變量。所以第二個或第三個選項是最好的,取決於你最終想要什麼。 – Sam