OK按钮不工作



请查看以下代码。

在这里,"确定"按钮没有响应。

import javax.microedition.midlet.*;
import javax.microedition.lcdui.*;
public class TexyFieldExample extends MIDlet implements CommandListener
{
    private Form form;
    private Display display;
    private TextField name, company;
    private Command ok;
    public TexyFieldExample()
    {        
        name = new TextField("Name","",30,TextField.ANY);
        company = new TextField("Company","",30,TextField.ANY);
        ok = new Command("OK",Command.OK,2);
    }
    public void startApp()
    {
        form = new Form("Text Field Example");
        display = Display.getDisplay(this);
        form.append(name);
        form.append(company);
        form.addCommand(ok);
        display.setCurrent(form);
    }
    public void pauseApp()
    {
    }
    public void destroyApp(boolean destroy)
    {
        notifyDestroyed();
    }
    public void commandAction(Command c, Displayable d) 
    {
        String label = c.getLabel();
        if(label.equals("ok"))
        {
            showInput();
        }
    }
    private void showInput()
    {
        form = new Form("Input Data");
        display = Display.getDisplay(this);
        form.append(name.getString());
        form.append(company.getString());
        display.setCurrent(form);
    }
}

在这个代码片段中,commandAction不会被调用,因为您忘记了设置CommandListener:

将命令的侦听器设置为此Displayable。。。

在startApp中,这看起来如下:

    //...
    form.addCommand(ok);
    // set command listener
    form.setCommandListener(this);
    //...

此外,正如另一个答案所指出的,即使在设置了侦听器之后,它也会错过该命令,因为代码检查错误——在Java中,"ok"不等于"OK"

事实上,考虑到这里只有一个命令,不需要签入commandAction-您可以在那里直接进入showInput-再次,直到只有一个命令。


在这个代码片段中值得添加的另一件事是日志记录。

有了适当的日志记录,只需在模拟器中运行代码,查看控制台,就会发现例如commandAction根本没有被调用,或者该命令没有被正确检测到:

// ...
public void commandAction(Command c, Displayable d) 
{
    String label = c.getLabel();
    // log the event details; note Displayable.getTitle is available since MIDP 2.0
    log("command  s [" + label + "], screen is [" + d.getTitle() + "]");
    if(label.equals("ok"))
    {
        // log detection of the command
        log("command obtained, showing input");
        showInput();
    }
}
private void log(String message)
{
    // show message in emulator console
    System.out.println(message);
}
// ...

相关内容

  • 没有找到相关文章

最新更新