日期:2014-05-20  浏览次数:20735 次

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();

这样试下,看可行不?