Je crée une classe interne dans une méthode. Après que j'accéder à certaines déclarations comme,Accéder à la classe interne lors de la création de BitmapField et l'ajouter dans HorizontalFieldManager
public class Test extends MainScreen
{
HorizontalFieldManager hfm;
Bitmap bitmap[] = new Bitmap[100];
BitmapField[] bitmapField = new BitmapField[100];
int countBitmap = 0;
Test()
{
VerticalFieldManager vfm_Main = new VerticalFieldManager();
hfm = new HorizontalFieldManager(HorizontalFieldManager.USE_ALL_WIDTH);
vfm_Main.add(hfm);
add(vfm_Main);
}
void drawBitmap()
{
bitmap[countBitmap] = new Bitmap(100, 100);
bitmapField[countBitmap] = new BitmapField(bitmap[countBitmap]){
public void paint(Graphics g)
{
................
................
g.drawLine(x1,y1,x2,y2);
}
}
synchronized(UiApplication.getEventLock())
{
for(int i = 0 ; i < bitmapField.length; i++)
{
if(bitmapField[i] != null)
{
bitmapField[i].setBitmap(bitmap[i]);
}
}
hfm.add(bitmapField[countBitmap]);
countBitmap++;
Mais ici le problème après la création du bitmap & avant de créer le bitmapField, le contrôle va à
synchronized(UiApplication.getEventLock()){hfm.add(bitmapField[countBitmap]); }
Alors avant de créer le bitmapField, il l'ajoute en hfm. Donc, la sortie arrive comme "Chaque fois qu'un nouveau BitmapField est ajouté dans hfm (signifie à la même position en remplaçant le précédent)". Mais je veux que les BitmapFields viennent les uns à côté des autres dans hfm.
Comment le faire?
Toute solution pourquoi le contrôle passe d'abord à hfm.add() avant la nouvelle classe interne bitmapField()?
Votre style de codage semble ici inégale, et il semble y avoir une certaine proximité parenthèse manquante. Cela rend un peu difficile de comprendre ce que vous essayez de faire ici. Par exemple, où se situe la seconde coupée de code? Est-ce la fin de drawBitmap()? – Richard
Le problème de remplacement (remplacement à la même position en remplaçant le précédent) est résolu maintenant. Mais un nouveau problème est que le dessin récent est ajouté en remplaçant le précédent. Signifie que si vous dessinez pour la première fois, il apparaît correctement dans bitmapField. Si vous dessinez pour la deuxième fois, alors 2 fois le 2ème dessin est ajouté dans bitmapField en remplaçant le précédent. Paint() s'appelle 2 fois pour dessiner 2 dessins. Comment résoudre ce problème? – Shreyas