oie galera…então eu criei uma aplicação offline…e essa é a minha classe de openfile:
[code]
public class openfile extends Command implements Runnable {
private MainCanvas canvas = null;
public boolean execute(MainCanvas main) {
this.canvas = main;
MainApplet.splash.setComponentValue("title", (String) parameters.elementAt(0));
canvas.setSplash(MainApplet.SPLASH_MESSAGE);
new Thread (this).start();
return true;
}
public void run () {
String formLoad = (String) parameters.elementAt(1);
for (int i = 2;i < parameters.size(); i++) {
String parameter = (String) parameters.elementAt(i);
Component comp = canvas.getCurrentForm().getComponentByName(parameter);
if(comp!=null){
GlobalVars.put(parameter, comp.getValue());
}
if(comp.getName().equals("Valor")){
String value = comp.getValue();
GlobalVars.put("Valor", value);
}
}
if (canvas.getCurrentForm().checkFields()) {
try {
canvas.load(formLoad);
} catch (SquareException e) {
GlobalVars.put("alertMsg", SquareException.getMessage(SquareException.GENERAL_ERROR));
canvas.load(MainApplet.getJadProperty("ALERT_SCREEN_FILE"));
}
return;
}
canvas.load(MainApplet.getJadProperty("ALERT_SCREEN_FILE"));
}
}[/code]
mas eu criei um dec e quando aperto o botão envés dele direcionar para a outra tela(um outro dec),ele dá erro:
Chamei o setError
alguém sabe me informar como eu resolvo?
j0nny
Março 9, 2010, 11:50am
#5
Vc faz algum controle com esse return true; do seu método execute() ?
VAMOS VER SE AJUDA:
[code]
public class clearAllFields extends Command {
public boolean execute(MainCanvas canvas) {
// TODO Auto-generated method stub
System.out.println("[clearAllFields] IN");
Form form = canvas.getCurrentForm();
form.reset();
System.out.println("[clearAllFields] OUT");
canvas.refresh();
return false;
}
}[/code]
[code]public class clearField extends ComponentCommand {
/* (non-Javadoc)
* @see com.eversystems.mobile.js.ComponentCommand#execute(com.eversystems.square.Component)
*/
public String execute(Component component) {
// TODO Auto-generated method stub
String value = component.getValue();
for (int i = 0; i < parameters.size(); i++) {
value = Strings.clear(value, (String)parameters.elementAt(i));
}
return value;
}
}[/code]
[code]
public class back extends Command {
public boolean execute(MainCanvas canvas) {
Logger.getInstance().println("[back] execute --- IN");
Context context = Context.getInstance();
Form form = context.back();
if (parameters.size() > 0) {
String formLoad = (String)parameters.elementAt(0);
if(canvas.getCurrentForm().getName().equals("_bCompras.dec")){
GlobalVars.remove("reqOK");
}
canvas.load(context.back(formLoad));
} else {
canvas.load(form);
}
canvas.refresh();
Logger.getInstance().println("[back] execute --- OUT");
return true;
}
}[/code]
[code]public class close extends Command {
public boolean execute(MainCanvas canvas) {
canvas.closeApp();
return true;
}
}[/code]
SÃO TODAS AS CLASSES QUE TENHO POR ENQUANTO NO PROJETO
obs: o back tb não funciona…só permanece na mesma classe…e o avançar tb dá erro
j0nny
Março 9, 2010, 11:58am
#9
Então perceba o seguinte.
Não sei se vc estudou Threads, mas basicamente, ela executa ‘paralelamente’ à outro ‘processo’ (não sei se posso chamar de processo).
Então, enquanto sua thread estiver sendo executada, seu método execute já ira ter retornado true.
Uma solução?
Talvez isso resolva.
Thread t = new Thread(this);
t.start();
t.join();
return true;
j0nny
Março 9, 2010, 11:59am
#10
[quote=Lita Mclean]VAMOS VER SE AJUDA:
[code]
public class clearAllFields extends Command {
public boolean execute(MainCanvas canvas) {
// TODO Auto-generated method stub
System.out.println("[clearAllFields] IN");
Form form = canvas.getCurrentForm();
form.reset();
System.out.println("[clearAllFields] OUT");
canvas.refresh();
return false;
}
}[/code]
[code]public class clearField extends ComponentCommand {
/* (non-Javadoc)
* @see com.eversystems.mobile.js.ComponentCommand#execute(com.eversystems.square.Component)
*/
public String execute(Component component) {
// TODO Auto-generated method stub
String value = component.getValue();
for (int i = 0; i < parameters.size(); i++) {
value = Strings.clear(value, (String)parameters.elementAt(i));
}
return value;
}
}[/code]
[code]
public class back extends Command {
public boolean execute(MainCanvas canvas) {
Logger.getInstance().println("[back] execute --- IN");
Context context = Context.getInstance();
Form form = context.back();
if (parameters.size() > 0) {
String formLoad = (String)parameters.elementAt(0);
if(canvas.getCurrentForm().getName().equals("_bCompras.dec")){
GlobalVars.remove("reqOK");
}
canvas.load(context.back(formLoad));
} else {
canvas.load(form);
}
canvas.refresh();
Logger.getInstance().println("[back] execute --- OUT");
return true;
}
}[/code]
[code]public class close extends Command {
public boolean execute(MainCanvas canvas) {
canvas.closeApp();
return true;
}
}[/code]
SÃO TODAS AS CLASSES QUE TENHO POR ENQUANTO NO PROJETO[/quote]
E aonde ficou a classe que chama a Thread que vc postou antes?
fica aki oh:
[code]public class openfile extends Command implements Runnable {
private MainCanvas canvas = null;
public boolean execute(MainCanvas main) {
this.canvas = main;
MainApplet.splash.setComponentValue("title", (String) parameters.elementAt(0));
canvas.setSplash(MainApplet.SPLASH_MESSAGE);
new Thread (this).start();
return true;
}
public void run () {
String formLoad = (String) parameters.elementAt(1);
for (int i = 2;i < parameters.size(); i++) {
String parameter = (String) parameters.elementAt(i);
Component comp = canvas.getCurrentForm().getComponentByName(parameter);
if(comp!=null){
GlobalVars.put(parameter, comp.getValue());
}
if(comp.getName().equals("Valor")){
String value = comp.getValue();
GlobalVars.put("Valor", value);
}
}
if (canvas.getCurrentForm().checkFields()) {
try {
canvas.load(formLoad);
} catch (SquareException e) {
GlobalVars.put("alertMsg", SquareException.getMessage(SquareException.GENERAL_ERROR));
canvas.load(MainApplet.getJadProperty("ALERT_SCREEN_FILE"));
}
return;
}
canvas.load(MainApplet.getJadProperty("ALERT_SCREEN_FILE"));
}
}[/code]
sobre o que vc tinha dito eu tiro o
new Thread (this).start();
return true;
e coloco no lugar o
Thread t = new Thread(this);
t.start();
t.join();
return true;
?
pq eu fiz isso só que dá erro e fala para fazer um try/catch…mas não adianta
j0nny
Março 9, 2010, 1:31pm
#12
[quote=Lita Mclean]fica aki oh:
[code]public class openfile extends Command implements Runnable {
private MainCanvas canvas = null;
public boolean execute(MainCanvas main) {
this.canvas = main;
MainApplet.splash.setComponentValue("title", (String) parameters.elementAt(0));
canvas.setSplash(MainApplet.SPLASH_MESSAGE);
new Thread (this).start();
return true;
}
public void run () {
String formLoad = (String) parameters.elementAt(1);
for (int i = 2;i < parameters.size(); i++) {
String parameter = (String) parameters.elementAt(i);
Component comp = canvas.getCurrentForm().getComponentByName(parameter);
if(comp!=null){
GlobalVars.put(parameter, comp.getValue());
}
if(comp.getName().equals("Valor")){
String value = comp.getValue();
GlobalVars.put("Valor", value);
}
}
if (canvas.getCurrentForm().checkFields()) {
try {
canvas.load(formLoad);
} catch (SquareException e) {
GlobalVars.put("alertMsg", SquareException.getMessage(SquareException.GENERAL_ERROR));
canvas.load(MainApplet.getJadProperty("ALERT_SCREEN_FILE"));
}
return;
}
canvas.load(MainApplet.getJadProperty("ALERT_SCREEN_FILE"));
}
}[/code]
sobre o que vc tinha dito eu tiro o
new Thread (this).start();
return true;
e coloco no lugar o
Thread t = new Thread(this);
t.start();
t.join();
return true;
?
pq eu fiz isso só que dá erro e fala para fazer um try/catch…mas não adianta[/quote]
Ah sim, o join() precisa de tratamento de exceção.
É os mesmo erro que ocorre agora?
sim d á o mesmo erro,a única coisa q aparece no console é; Chamei o setError
e na tela do emulador aparece uma alert da mensagem q esta o meu systemMessages_pt_BR.txt:
MCanvas.ProblemasAplicContateResp=Problemas en la aplicación.|Contate el responsable.
j0nny
Março 9, 2010, 1:48pm
#14
[quote=Lita Mclean]sim d á o mesmo erro,a única coisa q aparece no console é; Chamei o setError
e na tela do emulador aparece uma alert da mensagem q esta o meu systemMessages_pt_BR.txt:
MCanvas.ProblemasAplicContateResp=Problemas en la aplicación.|Contate el responsable.[/quote]
Provavelmente ele deve estar lançando uma exceção.
Faz assim, em cada catch(), coloque um System.out.println(); com uma mensagem, ai vc sabe se ele entra na exceção ou não. Ou melhor, debuga :lol:
então, não sei se pode haver com o erro do openfile mas assim que o projeto começar a ser inicializado eel da um erro:
at com.sun.kvem.ScreenImpl.access$100(Unknown Source)
at com.sun.kvem.ScreenImpl$DefaultDisplayUpdatePolicy.updateFace(Unknown Source)
at com.sun.kvem.ScreenImpl.updateFace(Unknown Source)
at com.sun.kvem.ScreenImpl.updateComponent(Unknown Source)
at com.sun.kvem.ScreenImpl.access$100(Unknown Source)
at com.sun.kvem.ScreenImpl$DefaultDisplayUpdatePolicy.updateFace(Unknown Source)
at com.sun.kvem.ScreenImpl.updateFace(Unknown Source)
at com.sun.kvem.ScreenImpl.updateComponent(Unknown Source)
at com.sun.kvem.ScreenImpl.access$100(Unknown Source)
at com.sun.kvem.ScreenImpl$DefaultDisplayUpdatePolicy.updateFace(Unknown Source)
at com.sun.kvem.ScreenImpl.updateFace(Unknown Source)
screenSettings: 240x320x220
at com.sun.kvem.ScreenImpl.updateComponent(Unknown Source)
mas abre o dec ‘normalmente’ coloquei System.out.println em todos os catch da o mesmo erro e no console da:
Chamei o setError
Display no canvas
Total : 1593
não sei debuga…mas vou tentar
apertando o botão para debug a única coia q eu reparei q aparece é uma classe…helper.class :?
j0nny
Março 9, 2010, 4:08pm
#17
desculpa mas estou procurando pelo o que nesse site exatamente…o site esta dando erro…em algumas coisas q eu clico!!!
desconsidera essa pergunta…era para outro forum…
então fiz o debug e pelo o que eu vi o erro é no MainCanvas e aparece o seguinte:
o que será?