Не можеш да invoke-ваш други MIDlets.
Направи го така:
Application1MainDisplayable (extends Form/Canvas implements <whatever> )
run-ваш с:
Display.getDisplay(thisMidlet).setCurrent(Application1MainDisplayable);
после exit-а става:
{
runFinalizationRoutines(); //ако има такива
Display.getDisplay(thisMidlet).setCurrent(AppListDisplayable);
}
където AppListDisplayable ти е обекта, с който показваш списъка с приложенията. ( javax.microedition.lcdui.List, няква form-а или там каквото е )
в runFinalizationRoutines() можеш да спираш нишки разни, да затваряш socket-и, да освобождаваш мултимедийни ресурси, etc.
Другото е, че в цялото приложение ще ти трябва instance-а на главния MIDlet заради Display.getDisplay() . (това предполагам го знаеш, ама ще го напиша)
Значи най-удобно става с, един вид, singleton:
public class MainMIDlet extends MIDlet {
public static MainMIDlet instance;
public MainMIDlet() {
instance = this;
}
.......
}
В този случай thisMidlet от по-горе става MainMIDlet.instance .
! Недей да викаш constructor-a на MainMIDlet от кода си, обекта се създава от платформата !
Всъщност ако толкова ти трябват отделни MIDlet-и, можеш да ги наблъскаш в MIDlet suite-a, т.е:
в .jar-a са няколкото MIDlet class-а, а .jad-а съдържа списъка, например :
MIDlet-1: Application1, /res/icons/App1Icon.png, applications.Application1MainMIDlet
MIDlet-2: Application2, /res/icons/App12con.png, applications.Application2MainMIDlet
По този начин, обаче application manager-a на телефона поема изрисуването на менюто, т.е splash sceen-a няма как да го покажеш, защото в този момент твой код все още не е стартиран.
P.S : Интересно ми е какво пишеш, ако не е тайна, разбира се.
