我正在使用Codenameone和ZXing读取QRCode。当我调用扫描仪时,我的手机会打开QRCode阅读器应用程序,我可以读取QRCode,但当android将我带回应用程序时,它会经过init然后启动状态。这让我回到了我申请的登录表格,而不是继续填写我当时的表格。
关于如何保持不变,有什么帮助吗?我做错什么了吗?提前谢谢。
EverproX.addMessage("Before Scann");
CodeScanner.getInstance().scanQRCode(new ScanResult() {
public void scanCompleted(String contents, String formatName, byte[] rawBytes) {
EverproX.addMessage("Scan Completed "+contents);
}
public void scanCanceled() {
EverproX.addMessage("Scan Cancelled");
}
public void scanError(int errorCode, String message) {
EverproX.addMessage("Scan Error "+errorCode+" "+message);
}
});
EverproX可以看作是一个日志类。
通过分析我们的日志,我们可以说,只要我们调用CodeScanner.getInstance().scanQRCode(),应用程序就会被调用为"Destroy"。然后,在扫描完成后,它再次通过init并启动。它从不进入scanComplete scanCanceled或scanError回调。
应用程序在CodeScanner调用时被销毁是正常的吗?非常感谢。
在您的codenameone项目中,您应该找到一个基于应用程序名称命名的类(例如MyApp.java),修改代码以读取类似的内容:
public class MyApp {
private Form current;
public void init(Object context) {
// Pro users - uncomment this code to get crash reports sent to you automatically
Display.getInstance().addEdtErrorHandler(new ActionListener() {
public void actionPerformed(ActionEvent evt) {
evt.consume();
Log.p("Exception in AppName version " + Display.getInstance().getProperty("AppVersion", "Unknown"));
Log.p("OS " + Display.getInstance().getPlatformName());
Log.p("Error " + evt.getSource());
Log.p("Current Form " + Display.getInstance().getCurrent().getName());
Log.e((Throwable) evt.getSource());
Log.sendLog();
}
});
}
public void start() {
if (current != null) {
current.show();
return;
}
new StateMachine("/theme");
}
public void stop() {
current = Display.getInstance().getCurrent();
}
public void destroy() {
current = null;
}
}