我正在嘗試爲我的應用程序創建一個幫助/關於屏幕,但我發現,我的代碼太糟糕了。 (我知道它可以使用一些重構,但是當使用新框架時,我會先讓代碼工作,然後立即返回並重構「正確地」執行任務)。在黑莓上創建應用程序信息/幫助屏幕
首先,我在做什麼並沒有「感覺」像做的正確的方式。我不確定只是將一堆文本字段填充到佈局中 - 有沒有更好的方法來實現?
其次,VFM是佔用了大量屏幕,並推着我的「關閉」按鈕關閉底部。我試圖做的是保持標題和'關閉'按鈕可見,但只需滾動VFM。
我該如何解決這些問題?
public class HelpScreen extends PopupScreen {
public HelpScreen() {
super(new VerticalFieldManager(), Field.FOCUSABLE);
/* Construct the Close button */
FieldChangeListener listener = new FieldChangeListener() {
public void fieldChanged(Field field, int context) {
ok();
}
};
ButtonField b = new ButtonField("Close", Field.FIELD_HCENTER);
b.setChangeListener(listener);
/* Construct the text box containing the help */
VerticalFieldManager vfm = new VerticalFieldManager(VERTICAL_SCROLL);
TextField f;
vfm.add(f = new TextField(FIELD_LEFT | READONLY));
f.setText("My application does stuff. This part is the description of what it does.");
vfm.add(f = new TextField(FIELD_LEFT | READONLY));
vfm.add(f = new TextField(FIELD_LEFT | READONLY));
f.setText("Commands:");
vfm.add(f = new TextField(FIELD_LEFT | READONLY));
f.setText("N - New Widget");
vfm.add(f = new TextField(FIELD_LEFT | READONLY));
f.setText("R - Rename Widget");
vfm.add(f = new TextField(FIELD_LEFT | READONLY));
f.setText("D - Duplicate Widget");
vfm.add(f = new TextField(FIELD_LEFT | READONLY));
f.setText("C - Clear Widget");
vfm.add(f = new TextField(FIELD_LEFT | READONLY));
f.setText("Shift-Delete - Delete Widget");
/* Construct the screen */
add(new LabelField("About Widget Wiffleball", Field.FIELD_HCENTER));
add(new SeparatorField());
add(vfm);
add(b);
}
public void ok() {
UiApplication.getUiApplication().popScreen(this);
}
}
謝謝 - 我會試試看,我知道一些重構克會有所幫助;當使用新的框架時,我傾向於「讓它工作」,然後返回並立即重構。 「不正確的感覺」來自於這樣一個事實,即使用一堆文本字段似乎有點令人費解。另一方面,或許那*是正確的方式。 – MikeyB 2009-06-25 03:19:42