我注意到一些冗餘代碼,我認爲這是一種可以使用迭代的情況。我想出了這個解決方案,並通過電子郵件發送給我的教授。通過EditText對象迭代
他回答說:
在這個例子中,雖然該解決方案以有限的方式工作,你需要更多的結構正確地做你正在嘗試做的。你所能做的就是創建一個需要重置方法的接口,讓所有控件實現這個接口並提供重置方法,通過控件作爲接口類型的集合進行循環,然後調用重置。
好的。這種說法很有道理。我知道如何使用重置方法實現接口。然而,「讓你的所有控件都實現這個接口......通過控件回放」令我感到困惑。任何人都可以闡明我如何實施這一戰略?
此外,如果有更好的解決方案,我全部耳朵。謝謝!
public class MainAddressForm extends AppCompatActivity {
Button cmdOK;
Button cmdClear;
EditText editFirst;
EditText editLast;
EditText editAddress;
EditText editTown;
EditText editState;
EditText editZip;
String first, last, address, town, state, zip;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main_address_form);
}
public void onClick(View view) {
if (cmdOK.getId() == view.getId()) {
first = editFirst.getText().toString();
last = editLast.getText().toString();
address = editAddress.getText().toString();
town = editTown.getText().toString();
state = editState.getText().toString();
zip = editZip.getText().toString();
Toast.makeText(getApplicationContext(), "Hi " + first + " " + last + "" + address + " " + town + " " + state + " " + zip + ".", Toast.LENGTH_SHORT).show();
}
if (cmdClear.getId() == view.getId()) {
setTexts(editFirst, editLast, editAddress, editTown, editState, editZip);
}
}
public void setTexts(EditText first, EditText last, EditText address, EditText town, EditText state, EditText zip){
List<EditText> clearTextFields = new ArrayList<>();
Iterator<EditText> itr = clearTextFields.iterator();
clearTextFields.add(first);
clearTextFields.add(last);
clearTextFields.add(address);
clearTextFields.add(town);
clearTextFields.add(state);
clearTextFields.add(zip);
while(itr.hasNext()){
itr.next().setText("");
}
}
}
這是完美的。我將編輯該問題以包含XML。這是一個線性佈局。謝謝。 –