j2meサポートトラバーサルでCustomItemをチェックしていますか?
j2meサポートトラバーサルでCustomItemを確認するにはどうすればよいですか?
シヴァ、トラバーサルとは何かについての理解にギャップがあると思います。説明させてください。
フォームにはアイテムをいくつでも追加できます。フレームワークは、MIDP に組み込まれているすべてのアイテムに対して以下を管理します。
ただし、CustomItem を拡張して独自の項目を実装すると、完全な制御は実装内にあります。Form に TextField と CustomItemImpl が含まれており、TextField と CustomItemImpl を切り替えたいとします。キー処理、コマンド処理、およびレンダリングはすべて CustomItemImpl の制御下にあるため、フレームワークが、いつ TextField に制御を持たせたいか、いつ制御を CustomItemImpl に渡す必要があるかを認識しなければならない方法が必要です。
ここで、CustomItem の traverse() メソッドがステップ インします。CustomItemImpl でのデータのレンダリングとキャプチャが完了したら false を返し、CustomItemImpl 内にコントロールを保持する場合は true を返します。
さらに詳しく説明しましょう。TreeItem を実装しているとします。フォーカスが TreeItem にある場合、次のことを行います。
上記のすべての機能は、TreeItem 実装の一部を形成します。ただし、ツリーの最初のノードを越えて KEY_UP を移動するか、ツリーの最後のノードを越えて KEY_DOWN を移動すると、TextField またはこの TreeItem に隣接する他のアイテムに移動したいと思うでしょう。フレームワークに意図を知らせる方法は、
これでクエリが明確になることを願っています。より具体的な説明のために、この特定の例をご覧になることを強くお勧めします。
私は解決策を見つけます。それは私のために働いています。
正しい解決策 CustomItem トラバーサルを見つけることは、クラス「javax.microedition.lcdui.CustomItem」のメソッド「getInteractionModes()」を呼び出すデバイスによってサポートされます。
コードスニペットを以下に示します
int supported_interaction_modes=this.getInteractionModes();
boolean horizontal__interaction,vertical_interaction;
if((supported_interaction_modes&CustomItem.TRAVERSE_HORIZONTAL)!=0) //Horizontal traverse support
horizontal_interaction=true;
else
horizontal_interaction=false;
if((supported_interaction_modes&CustomItem.TRAVERSE_VERTICAL)!=0)
vertical_interaction=true;
else
vertical_interaction=false;
上記のコード スニペットの「this」は、「javax.microedition.lcdui.CustomItem」から派生したクラスのオブジェクトを参照します。
boolean isCustomItemSupported;
try {
Class.forName("javax.microedition.lcdui.CustomItem");
isCustomItemSupported = true;
} catch (Exception e) {
isCustomItemSupported = false;
}