当前位置: 代码迷 >> J2ME >> keyPress 里面启动线程模拟器上正常。手机上错误处理(附源码)
  详细解决方案

keyPress 里面启动线程模拟器上正常。手机上错误处理(附源码)

热度:7536   发布时间:2013-02-25 21:34:43.0
keyPress 里面启动线程模拟器上正常。手机上异常处理(附源码)
protected void keyPressed(int keyCode) {
is_IME = true;
if (is_IME) {

Key0=null;
m_IME.pressKey(keyCode, gameAction);
candVector = m_IME.getCandidates();
inputLength=m_IME.getInputLength();
if(keyCode == Canvas.KEY_NUM0)
{
Key0=m_IME.getKey0();
new Thread(){
public void run(){
while(true){
if(IME.blnHasWord){
IME.blnHasWord = false;
inputLength=m_IME.getInputLength();
currentText=m_IME.getCommitText();
setText(currentText);
Key0=null;
}
}
}
}.start();

}

}
里面的线程在模拟器上正常,到手机上按0键就报异常

------解决方案--------------------------------------------------------
报什么异常啊?怎么能这么写线程呢...把new分开写..要不然等内存冒了你都不知道哪里new冒了.
------解决方案--------------------------------------------------------
启动线程 应该是 调用.star();方法吧?
------解决方案--------------------------------------------------------
if(IME.blnHasWord){
才会执行,可是我已经把它制成false了
还是执行 

不会吧...怎么可能呢...是不是你哪里设置出问题了?你仔细检查检查.比如if后面的大括号?
------解决方案--------------------------------------------------------
new Thread(new Runnable() {
public void run() {
while(true){
if(IME.blnHasWord){
IME.blnHasWord = false;
inputLength=m_IME.getInputLength();
currentText=m_IME.getCommitText();
setText(currentText);
Key0=null; 
}
}
}}).start();

这样试下,看可行不?