私はcodenameoneを使用してモバイルアプリケーションを開発しています。このアプリケーションでは、いくつかのクラスとコードを手動で実装します。たとえば、何らかの理由でcodenameoneデザイナーを使用せずにハードコーディングしてすべてのフォームを作成します。
ちなみに、codenameoneが使用するようなフォームでナビゲートしたかったので、Form
呼び出されたタイプの変数を1つ使用prevForm
し、フォームを開きたいときに現在のフォームに設定してから、新しいフォームを表示します。
わかりました、それがメインシナリオです。このアプリケーションでは、国際化も実装したいので、このアプリケーション用に独自のハッシュテーブル(ペルシア語と英語)を作成します。
これが私の問題です:
言語を設定または変更して、開いたフォームに適用するにはどうすればよいですか?
フォーム間を移動するための私の方法は良いですか?
これが私のコードです:
public class BaseForm extends Form implements ActionListener {
public BaseForm(){
this.setLayout(new BoxLayout(BoxLayout.Y_AXIS));
}
Command exit, ok, back;
Form prevForm;
protected void initForm(){
}
protected void showForm(){
}
protected void showForm(final Form prevForm){
//String name = this.getName();
//if("Reminder".equals(name) || "3Transaction".equals(name))
{
this.prevForm = prevForm;
Form f = this;
back = new Command("Back");
//ok = new Command("Ok");
//delete = new Command("Delete");;
Button button = new Button("Button");
f.addCommand(back);
//f.addCommand(ok);
//f.addCommand(delete);
//f.addComponent(button);
f.addCommandListener(new ActionListener() {
public void actionPerformed(ActionEvent ae) {
if (ae.getCommand().equals(back)) {
//Do Exit command code
System.out.println("Back pressed");
prevForm.showBack();
} else if (ae.getCommand().equals(ok)) {
//Do Start command code
System.out.println("Ok pressed");
}
}
});
button.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent ae) {
//Do button code
System.out.println("Action performed");
}
});
}
showForm();
}}
ネストされたフォームを開くには、次のコードを使用します。
LanguageUI lang = new LanguageUI();
lang.showForm(this);
言語の変更[フォーム]:
protected boolean onBtnSave() {
if(isRbFarsiSelected()){
UIManager.getInstance().setResourceBundle(new CommonSettings().getFarsi());
}
else {
UIManager.getInstance().setResourceBundle(new CommonSettings().getEnglish());
}
return false;
}