ブラックベリーアプリケーションでカスタムメニューを作成して、その外観を管理できるようにする必要があります。を拡張するクラスを作成し、抽象メソッドでカスタマイズするPopupScreenことで、カスタムメニューを作成することができました。のrun()メソッドをエミュレートするために、メソッドを抽象として作成しました。MenuItemLabelFieldinvokeAction()invokeAction()MenuItem

すべてが大丈夫でしたが、私は何かを覚えています。上司から、 SwitchApplicationやCloseMenuItemなどのネイティブを実装するように求められた場合はどうなりますか。Closeの実装は問題になるとは思いませんが、 SwitchアプリケーションやShow Keyboardのような他のネイティブでは、これで問題が発生します。だから私は別の解決策を考え出し、これが私のコードです: MenuItem
public CustomMenu(MainScreen screen) {
super(vfm);
Menu menu = screen.getMenu(0);
for(int i = 0; i < menu.getSize(); i++){
final MenuItem finalMenu = menu.getItem(i);
vfm.add(new CustomMenuItem(finalMenu.toString(), Field.FOCUSABLE){
protected boolean invokeAction(int action) {
finalMenu.run();
return true;
}
});
}
}
これは私のコンストラクタですCustomMenu。のインスタンスをMainScreenパラメータとして受け入れ、のリストを取得MenuItemして既存のに追加しますCustomMenu。invokeAction()オーバーライドされたメソッドには、のメソッドの対応物がありrun()ますMenuItem。そして、これは私がしたことの結果です:

MenuItem私はそれらのネイティブを自分の中に入れることができましCustomMenuたが、問題は、それらのネイティブを呼び出す(クリックする)ときにMenuItem(アプリケーションの切り替え、閉じる)、を取得したことIllegalStateExceptionです。それらのネイティブの実装を取得する方法はありMenuItemますか?run()または、メソッドをキャプチャして、MenuItemそれを自分で呼び出す方法はありCustomMenuますか?
