2013-02-06 37 views
1

如何在addTextChangedListener中等待一秒?以下代碼給出了以下錯誤:E/AndroidRuntime(1003):java.lang.IllegalMonitorStateException:線程在wait()之前沒有鎖定對象如何鎖定對象/成爲顯示器的所有者(Android)

在Android的參考方法wait()中,Object說:只能由擁有該對象監視器的線程調用;請參閱notify()有關線程如何成爲監視器的所有者的信息。

而在對象的notify()說: 此方法只能由擁有此對象的監視器的線程調用。線程成爲對象監視器的所有者 •通過執行該對象的同步方法; •通過執行同步對象的同步語句的主體; •如果對象類型爲Class,則執行同步靜態方法。我在這裏

一個問題:我不明白...

我應該怎麼做這裏「暫停」第二?

public class Spel extends FragmentActivity { 
@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 

    setContentView(R.layout.spel); 
    editText2 = (EditText) findViewById(R.id.editText2); 
editText2.addTextChangedListener(new TextWatcher() { 

    @Override 
    public void onTextChanged(CharSequence s, int start, 
      int before, int count) { 
     if (before==0) { 
      String v = s.toString(); 
      if (v.equals("0") || v.equals("1") || v.equals("2") || v.equals("3") || v.equals("4") || v.equals("5") || v.equals("6") || v.equals("7") || v.equals("8") || v.equals("9")) { 
       try { 
        wait(1000); 
       } catch (InterruptedException e) { 
        // TODO Auto-generated catch block 
        e.printStackTrace(); 
       } 
       editText1.requestFocus(); 
       editText1.setText(null); 
       editText2.setText(null); 
       int baanWorpScore = Integer.parseInt(v); 
      } 
      else { 
       // blijf wachten op goede invoer 
       editText2.setText(null); 
      } 
     } 
    } 
}); 

回答

1

wait()\ notify()方法需要解決consumer \ producer問題,當幾個線程使用某些共享資源時。在你的情況下,如果你想等待一秒鐘,你需要使用Handler和postDelayed。方法。如果你想凍結你的應用程序第二次使用Thread.sleep(1000)

+0

sleep()現在對我來說很好,謝謝! – user1837293

相關問題