- ベストアンサー
iアプリの複数パネル切替時の変数受渡
- iアプリのプログラムにおいて、複数のパネルやキャンバスで画面を切り替える際には、変数の受け渡し方が重要です。
- 例えば、MainCanvasとMainPanelの間で変数DATA_xを受け渡すためには、適切な方法を選ぶ必要があります。
- これによって、iアプリのプログラムの正常な動作を確保することができます。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
- ベストアンサー
遥か昔に503iの頃に作ったきりなんで知識が古いかもしれませんが・・。 iアプリを作成するとき、作成するPanelやCanvas側からIApplication側にアクセスする手段を残しておき、各表示間のやりとりはIApplicationを介して行っては? public class TEST extends IApplication { MainCanvas mc; MainPanel mp; public void start() { mc = new MainCanvas(this); mp = new MainPanel(this); Display.setCurrent(mc); } } class MainCanvas extends Canvas { IApplication iapp; int DATA_x; public MainCanvas(IApplication app) { super(); iapp = app; ~~~~ } } class MainPanel extends Panel { IApplication iapp; public MainPanel(IApplication app) { super(); iapp = app; ~~~~~ ここで変数DATA_xを使用したい! int x = iapp.mc.DATA_x; // DATA_xを取得 iapp.mc.DATA_x = x; // DATA_xを変更 ~~~~~~ } } 例えばこんな感じでしょうか。PanelとCanvasに保管してあるIApplicationインスタンスを介して他のものにアクセスしたりすればよいと思います。 こういうのは面倒というなら、例えば、IApplication.getCurrentApp()で現在のIApplicationインスタンスが取得できるので、これでIApplicationを取り出して、そこから同様にフィールドを取得して処理してもよいでしょう。 iアプリはとにかくメモリを余計に消費しないように作るのが基本(今はそれほどでもない?)だったので、クラスやメソッド、フィールドなどは極力余分なものを作らないようにしたほうがよいです。なので、面倒でもgetCurrentAppを使った方が良いかもしれませんね。
その他の回答 (1)
- Bonjin
- ベストアンサー率43% (418/971)
MainCanvasとMainPanelの関連性がわからないので考えられる方法だけ記述します。 ・DATA_xをstatic指定指定にする ・MainCanvasにgetterを実装して、MainPanelからDATA_xを取得出来るようにする。 ・DATA_xを共有するようなクラスを作成する。 などなど色々考えられます。 MainCanvasとMainPanelの関係や、DATA_xがMainCanvasやMainPanelでどう扱われるのかなど、もっと詳しく書かれると良い案が出てくるかもしれません。
お礼
ありがとうございました
お礼
ありがとうございました。 IApplication.getCurrentApp()でいんですね。 おかげ様で解決しました。
補足
とても参考になりました。 でも、 super();で下記エラーがでます。 トークン "(" に構文エラーがあります。正しくは "." です。 なぜなんでしょう?