这是我的uiapplication类:
public class HelloWorld extends UiApplication {
public HelloWorld(){
pushScreen(new LoadingScreen());
Ui.getUiEngineInstance().setAcceptableDirections(Display.DIRECTION_PORTRAIT);
}
public static void main(String[] args){
HelloWorld theapp = new HelloWorld();
theapp.enterEventDispatcher();
}
}
loadingScreen类:
public class LoadingScreen extends CustomMainScreen {
public LoadingScreen(){
Bitmap tcalogo = Bitmap.getBitmapResource("loading_360.png");
BitmapField tcalogoField = new BitmapField(tcalogo);
add(tcalogoField);
startLoading();
}
public void startLoading(){
ConsumeFactoryThread consumption = new ConsumeFactoryThread("http://example.com",this); //add arguments of url and scope
consumption.start();
}
public void onFinish(JSONArray array){ //method that executes when the json is retrieved
UiApplication.getUiApplication().pushScreen(new FeaturedScreen(array));
}
}
我按下一个装载屏幕,打开一个线程,下载json,然后在loadingScreen方法中运行onFinish方法,并用检索到的信息推送一个新屏幕。它工作,线程/下载不是我的问题,但它是用户按下并返回到loadingScreen的能力。我采用这种方式从堆栈中加载,但我不确定它是否是“正确”的方式。
如何使用loadingScreen一次?
答案 0 :(得分:3)
从代码的外观来看,您正在推动加载屏幕,然后通过onFinish方法将精选屏幕推送到堆栈。
使用后退键,它将循环显示已被推入堆栈的屏幕。
我建议使用尝试:
public void onFinish(JSONArray array) {
UiApplication.getUiApplication()
.pushScreen(new FeaturedScreen(array));
try {
UiApplication.getUiApplication().popScreen(this);
} catch(IllegalArgumentException e) {
//somehow the screen isn't on the stack
//Do nothing.
}
}
这应该从堆栈中删除LoadingScreen,这样当你按下它时,它就不再进入这个屏幕了。