2010-12-11 23 views
0

我需要一些很好的建議,我的代碼。 這是我想要做的。如何在一段時間後取消選擇查看而不凍結活動

我有一個活動,有一些意見,可以由用戶選擇。假設用戶選擇了一個視圖,我想在5秒後自動取消選擇這個視圖。 我是通過一個線程來完成的。

當用戶選擇的視圖,我調用

...

Deselector deselect = new Deselector(mp.getDuration(), clickedview); 
deselect.start(); 

...中的活性。

的deselector類:

class Deselector extends Thread 
{ 
int millis=0; 
View view = null; 

Deselector(int millis, View view) 
{ 
    this.millis = millis; 
    this.view = view ; 
} 

@Override 
public void run() { 
    // TODO Auto-generated method stub 
    try { 
     this.sleep(millis); 
     view.setSelected(false); 
    } catch (InterruptedException e) { 
     // TODO Auto-generated catch block 
     e.printStackTrace(); 
    } 

} 

} 

我的程序崩潰和logkitty說

12-11 14:29:37.457:ERROR/AndroidRuntime(3263):android.view.ViewRoot $ CalledFromWrongThreadException :只有創建視圖層次結構的原始線程可以觸及其視圖。

該怎麼做對不對?

在此先感謝

醫學博士

回答

3

在小部件或Handler上使用postDelayed(),而不是後臺線程,以便在建議的延遲之後執行工作。

+0

感謝,現在我得到了想要的效果。 – mad 2010-12-11 16:10:10

1

我得到它的工作與我的deselctor可運行現在有點短做以下

clickedview.postDelayed(new Deselector(clickedview), mp.getDuration()); 

class Deselector implements Runnable 
{ 
View view = null; 

Deselector(View view) 
{ 
    this.view = view ; 
} 

@Override 
public void run() { 
    // TODO Auto-generated method stub 
    try { 
     view.setSelected(false); 
    } catch (Exception e) { 
     // TODO Auto-generated catch block 
     e.printStackTrace(); 
    } 

} 

} 
相關問題