(아래 코드)를 표시하지 않는 이유는 무엇입니까?OnClickListener를 & 내 "OnClickListener를"은 "해서 ProgressDialog"에서해서 ProgressDialog
-3
A
답변
4
loadsuchen()
은 주 스레드에서 실행되는 무거운 방법입니다. 별도의 스레드에서 그 방법을 실행하는 AsyncTask
를 사용하고 마지막에 dialog.dismiss()
전화 :
@Override
public void onClick(View arg0)
{
final ProgressDialog dialog = ProgressDialog.show(TankFinderActivity.this, "", "Loading. Please wait...", true);
InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
imm.hideSoftInputFromWindow(filterTextSSD.getWindowToken(), 0);
new AsyncTask<Void, Void, Void>()
{
@Override
protected Void doInBackground(Void... params)
{
loadsuchen();
return null;
}
@Override
protected void onPostExecute(Void result)
{
dialog.dismiss();
}
}.execute();
}
1
그것의 당신이 보여주고 가능한 한 빨리 대화 상자를 닫 것이다 button.it 같은 클릭 이벤트에 대한 대화 상자를 기각하고 있기 때문에 대화 상자가 나타납니다. 코드를 변경하고 dialog.dismiss()를 다른 곳에 보관하십시오.
+1
아니요, 아니요 .. –
1
버튼
Button click = (Button) findViewById(R.id.button1);
click.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
// TODO Auto-generated method stub
openprogresdialog();
}
});
는이 방법을 만들기를 클릭합니다.
private void openprogresdialog() {
// TODO Auto-generated method stub
final ProgressDialog progDailog = ProgressDialog.show(
HidekeybordActivity.this, "Testing", "Please wait...", true);
new Thread() {
public void run() {
try {
// Some code........
} catch (Exception e) {
}
progDailog.dismiss();
}
}.start();
}
+0
이 답변은 정답이지만,'onPostExecute()'메소드 내부에서 메인 스레드에서'progDailog.dismiss();'를 실행하기 위해'AsyncTask'를 사용하는 것을 선호합니다 :) –
기본적인 프로그래밍 작업이 필요합니다. 비동기 작업을 사용하여 원하는 작업을 수행하십시오. –