まず、私の問題を理解してみてください。これに関連する質問が多すぎることはわかっていますが、私の場合は誰も働いていません。
なぜ私は知らないのですか、私のコードを見てください。
これは機能しています
public final class MyScreen extends MainScreen implements FieldChangeListener
{
private combine enter_in;
private manager_s ms , ms_1 ;
private Bitmap img;
LabelField lb_1 , lb_2 , lb_3 ;
public MyScreen()
{
setTitle("MyTitle");
img = Bitmap.getBitmapResource("icon.png");
//Bitmap img_1 = Bitmap.getBitmapResource("icon.png");
enter_in = new combine ( Field.FOCUSABLE , img );
enter_in.setChangeListener(this);
ms = new manager_s( 0 , 4 );
ms.add(enter_in);
lb_1 = new LabelField("Menu") ;
lb_2 = new LabelField("Favorites") ;
lb_3 = new LabelField("Reserved") ;
ms.add(lb_1);
ms.add(lb_2);
ms.add(lb_3);
add(ms);
}
}
しかし、私がFieldChangedListenerを実装しているとき、その時点ms.delete(lb_1)
では機能していませんが、機能していdelete(ms)
ます。この問題の解決にご協力ください
public void fieldChanged(Field field, int context)
{
if ( field == enter_in )
{
ms.delete(lb_1);
}
}
だから、私はそれを求めています、ms.delete(lb_1)がMyScreenクラスの下で機能しない理由があります。
これは、私がマネージャー(custom_manager)として使用している私のmanager_classであり、このマネージャーは、画面内にフィールドを追加するために、私のクラスによって拡張されています。
public class manager_s extends Manager
{
int col ;
int w_1 = 20 ;
protected manager_s(long style , int col )
{
super(style);
this.col = col ;
}
protected void sublayout(int width, int height)
{
for ( int i = 0 ; i < col ; i ++ )
{
Field field = getField (i);
layoutChild( field , 130 , 100 );
}
for ( int i = 0 ; i < col ; i ++ )
{
Field field = getField (i);
setPositionChild ( field , w_1 , 20 );
w_1 = w_1 + 135 ;
setExtent ( width , 200 );
}
}
}
エラーはINDEX_OUT_OF_BOUND_EXCEPTIONです。これは私の質問です。インターネット上のすべての人が(リソースとして)フィールドを削除すると言っているのですが、私の場合は何も機能していません。