2013-04-06 3 views
-2

버튼을 클릭 할 때 대화 상자를 열고 싶습니다. 이 대화 상자에서 루프를 통해 올 텍스트를 동적으로 (스톱워치와 같이) 텍스트를 설정하려고합니다. 누군가 샘플 코드를 안내해 주시겠습니까? 나는 그물에 주어진 많은 예제를 시도했지만 성공적으로 결과를 얻을 수 없습니다.Android 비동기 작업 사용

//Button where the action starts 
public void onClickStart(View v) { 
    final Dialog dialog = new Dialog(MainActivity.this); 
    dialog.setContentView(R.layout.activity_details); 
    dialog.setTitle("Your Step Details"); 
    dialog.show(); 
    DisplayTask dd= new DisplayTask(); 
    dd.execute(); 
} 

public void doWork(){ 
     final Handler handler=new Handler(); 
     new Thread(new Runnable(){ 
      boolean isRunning=true; 
      @Override 
      public void run() { 
       while(isRunning){ 
        try{ 
         handler.post(new Runnable(){ 

          @Override 
          public void run() { 
           try{ 
            TextView txtCurrentTime= (TextView)findViewById(R.id.txtLeft); 
             Date dt = new Date(); 
             int hours = dt.getHours(); 
             int minutes = dt.getMinutes(); 
             int seconds = dt.getSeconds(); 
             String curTime = hours + ":" + minutes + ":" + seconds; 
             txtCurrentTime.setText(curTime); 
           }catch (Exception e) {} 

          } 

         }); 
        }catch(Exception e){ 

        } 
       } 

      } 

     }).start(); 
    } 



public class DisplayTask extends AsyncTask<Void , Void, Void> { 


    protected void onPostExecute(){ 
     MainActivity main= new Mai`enter code here`nActivity(); 
     main.doWork(); 
    } 

    @Override 
    protected Void doInBackground(Void... params) { 
     onPostExecute(); 
     return null; 
    } 
} 
+1

시도한 내용 - – minhaz

+0

버튼을 클릭 할 때마다 메서드가 호출되었습니다. 대화 상자가 열렸습니다. 이 대화 상자에는 두 개의 텍스트 상자가 있습니다. 동적 텍스트로 텍스트를 설정하고 싶습니다 (시간을 말합니다). asyncTask 클래스를 만들고 onPostExecute()에서 textBox를 업데이트하는 메서드를 호출했습니다. 하지만 작동하지 않습니다 – DebD

+0

코드를 게시 할 수 있습니까? 그러면 우리는 당신이 잘못한 것을 볼 수 있습니다. – Jules

답변

0

타이머에서 작업하려면 AsyncTask가 올바른 방법이 아닙니다. 핸들러를 사용하여 postMessageDelayed를 사용하여 메시지를 게시하십시오. 이렇게하면 몇 밀리 초/초 안에 작업을 수행 할 수 있지만 UI 스레드에서 발생합니다.

+0

나는 타이머를 원하지 않는다. 사실 그 텍스트 상자에 내 DB에서 폴링 할 무언가를 표시하고 싶습니다. 내 대화 상자에 텍스트 상자가 포함되어 있으므로이 대화 상자에 표시되어야합니다. – DebD

+0

대화 상자의 텍스트 뷰에서 setText를 호출하면됩니다. 그냥 UI 스레드에서 완료되었는지 확인하십시오. –