在blackberry中创建自定义输入对话框

在blackberry中创建自定义输入对话框,blackberry,dialog,Blackberry,Dialog,嗨,我是黑莓的新手,我正在尝试在黑莓7.0的菜单点击事件上创建一个自定义输入对话框。一切正常,唯一的问题是我无法检索对话框中文本框的字符串 public class MyScreen extends MainScreen implements FieldChangeListener { String host; private MenuItem mu; Dialog dg; TestDialog td; public MyScreen() { final String choi

嗨,我是黑莓的新手,我正在尝试在黑莓7.0的菜单点击事件上创建一个自定义输入对话框。一切正常,唯一的问题是我无法检索对话框中文本框的字符串

public class MyScreen extends MainScreen implements FieldChangeListener
{
String host;
private MenuItem mu;
Dialog dg;
TestDialog td;

public MyScreen()
{    
    final String choices[] = {"Ok","Cancel"};
    final int values[] = {Dialog.OK,Dialog.CANCEL};

    mu=new MenuItem("Configure IP", 1, 1){
        public void run()
        {
            UiApplication.getUiApplication().invokeLater(new Runnable()
            {
                public void run()
                {
                    td=new TestDialog(choices, values);
                    dg=new TestDialog(choices, values);
                    int iResponse = dg.doModal();
                    if(iResponse == 0)
                    {
                        String url=td.getUsernameFromField();
                        if(url.equals(""))
                        {
                            Dialog.alert("Empty");
                        }
                else
                {
                    Dialog.alert("Not Empty");
                }
                    }
                    else
                    {
                        System.out.println("Cancel Presses");
                    }   
                }
            });         
        }
    };

    addMenuItem(mu);
    setTitle("Custom Dialog box");
   }
 }



final class TestDialog extends Dialog{

public RichTextField rd;

public TestDialog(String choices[],int values[]){
    super("Enter Host address", choices,values,Dialog.OK,       
 Bitmap.getPredefinedBitmap(Bitmap.INFORMATION), Dialog.GLOBAL_STATUS);

    rd=new RichTextField();
    add(rd);
    rd.setEditable(true);
    XYEdges thickPadding = new XYEdges(10, 10, 10, 10);
    Border roundedBorder = BorderFactory.createRoundedBorder(thickPadding,   
     Border.STYLE_SOLID);
    rd.setBorder(roundedBorder);
 }    

  public String getUsernameFromField(){
    return rd.getText();
  }
 }
所以运行代码,点击菜单按钮后打开一个输入对话框。现在,如果我在文本框中输入任何内容并单击ok,我会得到字符串url==“”的值,并且会得到一个对话框,显示为空。
我只想要那个文本框值。请帮我解决这个问题…

使用
navigation在
TestDialog类中单击
<代码>受保护的布尔导航单击(int状态,int时间)
{
alert(rd.getText());
返回true;

}
它可以工作

@AMUL如果你没有得到相应的按钮点击事件,那么你也可以实施替代解决方案。实现
PopupScreen
,其外观类似于
对话框
。。检查下面的代码,您可以轻松地单击相应的
按钮的事件
字段

import net.rim.device.api.ui.Field;
import net.rim.device.api.ui.FieldChangeListener;
import net.rim.device.api.ui.UiApplication;
import net.rim.device.api.ui.XYEdges;
import net.rim.device.api.ui.component.ButtonField;
import net.rim.device.api.ui.component.Dialog;
import net.rim.device.api.ui.component.RichTextField;
import net.rim.device.api.ui.container.PopupScreen;
import net.rim.device.api.ui.container.VerticalFieldManager;
import net.rim.device.api.ui.decor.Border;
import net.rim.device.api.ui.decor.BorderFactory;

public class CustomDialog extends PopupScreen implements FieldChangeListener
{   
    public RichTextField rd;
    ButtonField btnOK,btnCancel;

public CustomDialog()
{
    super(new VerticalFieldManager());

    rd=new RichTextField();
    rd.setEditable(true);
    XYEdges thickPadding = new XYEdges(10, 10, 10, 10);
    Border roundedBorder = BorderFactory.createRoundedBorder(thickPadding,Border.STYLE_SOLID);
    rd.setBorder(roundedBorder);

    btnOK = new ButtonField("OK");
    btnOK.setChangeListener(this);

    btnCancel = new ButtonField("Cancel");
    btnCancel.setChangeListener(this);


    add(rd);
    add(btnOK);
    add(btnCancel);
}

public void fieldChanged(Field field, int context)
{
    // TODO Auto-generated method stub
    if (field == btnOK)
    {
        UiApplication.getUiApplication().invokeLater(new Runnable() {

            public void run() {
                // TODO Auto-generated method stub
                Dialog.alert(rd.getText());
            }
        });

    }
    else if(field == btnCancel)
    {
        close();
    }
}

public void close() {
    close();
    super.close();
}

} 


Push this screen on your Menu button click event or where ever u want.  hopw it helps !!! 

谢谢你早日回复。。。我实现了那个方法。。。但我该把它叫哪里呢。我试着在OK click事件中调用它,但它抛出了一个异常。。。请提供更多详细信息…在TestDialog类中放置导航单击方法。超出构造函数的范围。。它会起作用的。。我没有得到正确的按钮点击事件。此方法适用于所有按钮。