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