2014-04-18 2 views
1

내 새 Android 앱에서 버튼을 눌러 진행 표시 줄을 만들 필요가 있지만 3 초 후에 보이지 않게해야합니다. 다음 작업 전에 Android 지연이 발생했습니다.

나는 웹에서 이걸 발견하지만, 그것은 작동하지 않습니다

public void search(View view) throws InterruptedException { 
ProgressBar progressbarSearch = (ProgressBar) findViewById(R.id.progressBar); 
    Button searchbutton = (Button) findViewById(R.id.button); 
progressbarSearch.setVisibility(1); 
    searchbutton.setText("Searching devices..."); 

    Handler myHandler = new Handler(); 
    //this waits 3 seconds, then will call the run() method below. 
    myHandler.postDelayed(stopSearching, 3000); 


} 

private Runnable stopSearching = new Runnable() 
{ 
    @Override 
    public void run() 
    { 
     ProgressBar progressbarSearch = (ProgressBar) findViewById(R.id.progressBar); 
     progressbarSearch.setVisibility(0); 
    } 
}; 

경우 오류가 무엇입니까? 진행률 표시 줄은 버튼을 누른 후 시작되지만 3 초 후에 보이지 않게되지 않습니다.

+0

어떻게 progressbarSearch 필드 만들기 및 실행 가능한에서 재사용하는 대신 다시 찾는에 대한. – donfuxx

답변

0
progressbarSearch.setVisibility(View.INVISBLE); 

여기서 상수를 사용해야합니다. 오류가 발생하기 쉽고 값을 사용하기가 쉽지 않습니다. (예에 의해 증명 :))

+0

고마워요! :) – Gualty

+0

그것은 상수를 값으로 바꾸는 컴파일러의 역할이지 코더의 값이 아닙니다. 이름을 사용하면 코드가 훨씬 명확 해집니다. – Snicolas

0
Button searchbutton = (Button) findViewById(R.id.button); 
    searchbutton.setText("Searching devices..."); 
    searchbutton.setOnClickListener(new OnClickListener() { 

     @Override 
     public void onClick(View v) { 
      // TODO Auto-generated method stub 
      ProgressBar progressbarSearch = (ProgressBar) findViewById(R.id.progressBar1); 
      progressbarSearch.setVisibility(View.VISIBLE); 
      try { 
       search(v); 
      } catch (InterruptedException e) { 
       // TODO Auto-generated catch block 
       e.printStackTrace(); 
      } 
     } 
    }); 

} 

public void search(View view) throws InterruptedException { 

    Handler myHandler = new Handler(); 
    // this waits 3 seconds, then will call the run() method below. 
    myHandler.postDelayed(stopSearching, 3000); 

} 

private Runnable stopSearching = new Runnable() { 
    @Override 
    public void run() { 
     ProgressBar progressbarSearch = (ProgressBar) findViewById(R.id.progressBar1); 
     progressbarSearch.setVisibility(View.INVISIBLE); 

    } 
}; 

변경과 같은 코드

관련 문제