在blackberry中创建自定义输入对话框
嗨,我是黑莓的新手,我正在尝试在黑莓7.0的菜单点击事件上创建一个自定义输入对话框。一切正常,唯一的问题是我无法检索对话框中文本框的字符串在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
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类中放置导航单击方法。超出构造函数的范围。。它会起作用的。。我没有得到正确的按钮点击事件。此方法适用于所有按钮。