ライブラリのWebサイトにアクセスするための検索機能を作成しています。クエリ文字列が送信されると、プログラムは新しいスレッドを起動してWeb上の情報を解析します。 これはAVDで正常に動作しますが、私のHTC DesireHDは検索結果を繰り返し表示します(実際の結果が1の場合は2. 3. 3. 1と表示されます)。 onQueryTextSubmitメソッドでブレークポイントを設定すると、メソッドonQueryTextSubmit()のコードが2回実行されていました。 とここに私のコードです:SearchView onQueryTextSubmitを1回押すと2回実行する
sv.setOnQueryTextListener(new OnQueryTextListener(){
@Override
public boolean onQueryTextChange(String newText) {
return false;
}
@Override
public boolean onQueryTextSubmit(String query) {
list.clear();
String str = null;
try {//encoding Chinese character
str = new String(query
.trim().getBytes(), "ISO-8859-1");
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
SearchPost sp = new SearchPost(SEARCH_URL + str);
new Thread(sp).start();
return false;
}
});
protected class SearchPost implements Runnable{
public String url = "";
SearchPost(String urls){
url = urls;
}
public SearchPost() {
}
@Override
public void run() {
Message message = handler.obtainMessage();
message.what = DOWNLOAD_COMPLETE;
try{
doc = Jsoup.connect(url).get();
handler.sendMessage(message);
}catch(IOException e){
e.printStackTrace();
message.what = DOWNLOAD_FAIL;
handler.sendMessage(message);
}
}
}
なぜメソッドの戻り値をfalseに指定しましたか? –