2011-09-20 51 views
0

我有一個EDITTEXT在我的申請,我在代碼中添加監聽像下面OnFocusChangeListener鎖桂

if(edit!=null){ 
     edit.setOnFocusChangeListener(new View.OnFocusChangeListener() {    
      public void onFocusChange(View v, boolean hasFocus) {   
       // TODO Auto-generated method stub 
       if(paramKey!=null){ 

        if(!hasFocus){ 
        if(edit.getText()!=null) 
         dataModel.updateParamsValue(paramKey, edit.getText().toString()); 
        } 

       } 
      } 

     }); 
    } 

當我專注於我的EDITTEXT並進入鎖定貴一文中,我錯過了什麼?

+1

您的dataModel.update方法返回? –

+0

我認爲updateParamsValue()鎖定gui而不是OnFocusChangeListener ..請確保將updateParamsValue()放在後臺進程中,如果它正在與服務器或Internet進行通信.. – ngesh

+0

updateParamsValue是一個非常簡單的操作並且不會返回任何內容 – ikbal

回答

1

DataModel.updateParamsValue是一個繁重的操作嗎?你的監聽器在UI線程中工作,所以它會鎖定UI直到它完成。嘗試更改代碼,如下所示:

if(edit.getText()!=null) 
       v.post(new Runnable(){ 
        dataModel.updateParamsValue(paramKey, edit.getText().toString()); 
       }); 
      } 
+0

它實際上是一個非常簡單的操作,我在很多地方使用它,問題是我看不到我輸入的內容 – ikbal