ユーザーが入力に何かを入力してEnterキーを押すと、検索機能があり、asynctaskは結果を取得するために起動します。 asynctaskが実行されている間に、/読み込まれていることを表示するtextview(visibility = gone)が必要です。ただし、postExecuteで結果を表示する前に、読み込み中のテキストを1秒間だけ表示します。だから、数秒間にasynctaskが実行されていますが、ロードテキストは表示されません。なぜ誰が知っていますか?asynctask中にTextViewが表示されない
私のコードでわかるように、asynctaskが実行される前とasynctaskでpreExecute中に読み込みテキストが表示されるように設定していますが、いずれも問題を解決しません。
編集は私のEditTextで、検索は、ここに私の "ロード" のTextView
は私のEditTextのKeyListenerです:
edit.setOnKeyListener(new OnKeyListener() {
public boolean onKey(View v, int keyCode, KeyEvent event) {
if (event.getAction() == KeyEvent.ACTION_DOWN) {
switch (keyCode) {
case KeyEvent.KEYCODE_ENTER:
retrieving.setVisibility(View.VISIBLE);
SearchTask task = (SearchTask) new SearchTask(edit,retrieving);
task.execute(edit.getText().toString());
try {
task.get();
} catch (InterruptedException e) {
e.printStackTrace();
} catch (ExecutionException e) {
e.printStackTrace();
}
break;
}
}
return false;
}
});
ここ
はasynctaskです:
パブリッククラスSearchTaskはAsyncTask {
を拡張しますprivate EditText edit;
private TextView retrieving;
public SearchTask(EditText edit,TextView retreiving,) {
this.edit = edit;
this.retrieving = retreiving;
}
@Override
protected void onPreExecute() {
InputMethodManager imm = (InputMethodManager) activity.getSystemService(Context.INPUT_METHOD_SERVICE);
imm.hideSoftInputFromWindow(edit.getWindowToken(), 0);
retrieving.setVisibility(View.VISIBLE);
}
@Override
protected Playlist doInBackground(String... params) {
//download and parse xml
}
@Override
protected void onPostExecute(Playlist playlist) {
retrieving.setVisibility(View.GONE);
}
ありがとう、task.get()問題でした。 – heero