2013-07-04 80 views
0

我的Android程序中有兩個挑戰,下面列出了,請幫助我。正在運行的線程滿足條件時退出MainActivity

  1. 假設我在MainActivity啓動一個線程A,以及根據是否一定條件
    在線程A被滿足,整個應用程序必須關閉。 (因爲finish()僅在Activity中可用並且不能從線程訪問)

2.In MainActivity我有一個EditText。我按的每封信都設置爲通過藍牙Socket轉接,通過藍牙StreamCOnnection到達PC。

因此,我需要獲取每個字母(單個字符),我在EditText中鍵入,存儲在char變量中。 (它也應該考慮退格鍵,這意味着沒有輸入字母)。

當用戶在EditText中輸入字母時,在MainActivity中初始化一個字符變量(單個字母),正在運行的線程「A」將獲取char變量的值並將其發送到套接字outputstream並清除char變量新輸入的字母可以存儲用於後續的套接字流發送。

因此,我對第2點的問題是,如何取回編輯框的最後一個鍵入的字符,並考慮將被忽略的退格鍵。

我谷歌搜索很多,也提到類似的帖子(Link1)& Link2,但我無法成功實現它。

(PS:我很抱歉,我已經寫了詳細的,而不是粘貼片段作爲我的程序是有點大,可能混淆我正確的問題是什麼)

回答

1

1)完成()是一個功能Activity對象。如果該線程是該活動的一個子類,它可能會失敗。如果線程有一個對Activity的引用,它可以調用activityReference.finish()。完成()是以編程方式結束活動的唯一方法。

2)使用TextWatcher並將其添加到EditText中。這會告訴你什麼時候輸入一個字符。你可以弄清楚新數據是什麼並處理它。

+0

@覆蓋 \t \t \t公共無效beforeTextChanged(CharSequence中,詮釋開始,詮釋計數, \t \t \t \t \t INT後){// 我想如果不是空 \t清除掉任何以前的文本\t \t \t嘗試 \t \t \t \t { \t \t \t \t if(keypad.getText()。length()> 0) \t \t \t \t \t keypad.setText(「」); \t \t \t \t} \t \t \t \t \t \t \t趕上(例外EC) \t \t \t \t { \t \t \t \t \t ec.printStackTrace(); \t \t \t \t} \t \t \t \t 是的,我已經嘗試過了,但我是越來越計算器錯誤:d 請讓我知道我能得到的只有我最後按下一個EditText考慮退格鍵是字母忽視 – Chandru

1

我的建議是:

1)使用處理,使回調到UI線程,如果滿足條件。從那裏,你可以調用finish()方法。

2)我會在ontextListener上實現Edittext。在那個聽衆中,你可以聽任何你想要的按鍵(人物或其他)。

希望有所幫助。

相關問題