高分请教:某个按钮型的StringItem响应后如何获取对应的一组TextField的用户输入值?
import javax.microedition.lcdui.*;
import javax.microedition.midlet.*;
public class Item extends MIDlet implements ItemCommandListener
{
private Display display;
private Command cmd=new Command( "Go ", Command.ITEM, 1);
private StringItem strItem;
private Form form;
private TextField input;
public Item()
{
super();
display = Display.getDisplay(this);
form = new Form( " ");
for(int i=0;i <3;i++)
{
input=new TextField( "请输入参数值 "+i,null,200,TextField.ANY);
}
strItem=new StringItem( " ", "执行 ", javax.microedition.lcdui.Item.BUTTON);
strItem.setDefaultCommand(cmd);
strItem.setItemCommandListener(this);
form.append(strItem);
display.setCurrent(form);
}
public void commandAction(Command c, javax.microedition.lcdui.Item item)
{
if(c==cmd)
{
//如何在这里获取那组TextField用户的输入值:
for(int j=0;j <3;j++){
String value=input.getString();
System.out.println(value);
}
}
....
}
}
上面打印出来的结果是3个null,如何动态的获取一组用户的输入值呢?
在线等待各位的帮忙!
[解决办法]
private TextField input; 应该设置为一个空间数组,否则,你在
for(int i=0;i <3;i++)
{
input=new TextField( "请输入参数值 "+i,null,200,TextField.ANY);
}
只是对其进行3次赋值
[解决办法]
不好意思,是控件。
这样试试:
private TextField[] input;
.....
input = new TextField[3];
for(int i=0;i <3;i++)
{
input[i]=new TextField( "请输入参数值 "+i,null,200,TextField.ANY);
}
你说的total是?
[解决办法]
可不可以不用StringItem
可以的话,我给你写一段代码
[解决办法]
/*
* InputsMidlet.java
*
* Created on 2007年4月1日, 下午7:56
*/
package src;
import javax.microedition.midlet.*;
import javax.microedition.lcdui.*;
/**
*
* @author 碳酸钙
* @version
*/
public class InputsMidlet extends MIDlet implements CommandListener{
private int catalogs;
private int items;
private Form f;
private TextField[] input;
private Command nextPage;
private Command okCommand;
private int index;
public InputsMidlet(){
super();
f = new Form( "请填写参数 ");
nextPage = new Command( "下一项 ",Command.ITEM,1);
okCommand = new Command( "确定 ",Command.SCREEN,1);
index = 0;
//模拟从web读取到数字
catalogs = 10;
f.addCommand(okCommand);
f.setCommandListener(this);
//这里模拟第一页
items = 3;
input = new TextField[items];
for(int i=0; i < items; i++){
input[i] = new TextField( "参数 "+i,null,50,TextField.ANY);
f.append(input[i]);
}
Display.getDisplay(this).setCurrent(f);
}
public void startApp() {
}
public void pauseApp() {
}
public void destroyApp(boolean unconditional) {
}
public void commandAction(Command command, Displayable displayable) {
if(displayable != f)
return;
if(command == nextPage && index < catalogs){//切换到下一页
index ++;
//模拟获取这项中需要填写的TextField个数
items = 5;
//清除以前的TextField
f.deleteAll();
input = new TextField[items];
for(int i=0; i < items; i++){
input[i] = new TextField( "参数 "+i,null,50,TextField.ANY);
f.append(input[i]);
}
f.removeCommand(nextPage);
f.addCommand(okCommand);
}else if(command == okCommand){
//输出当前页的输入内容
String parameter = null;
for(int i=0; i < items; i++){
parameter = input[i].getString();
System.out.println(parameter);
}
f.removeCommand(okCommand);
f.addCommand(nextPage);
}
}
}
[解决办法]
用index索引,要返回前面的操作,将index值减小即可.可以再加一个返回按钮
[解决办法]
可以用一个List
比如
String[] strArray ={
"操作一 ",
"操作二 ",
........
}
menu = new List( "选择操作 ",Choice....,strArray, null);
然后怎么做,看看doc吧.呵呵