2013-05-01 1 views
1

진행률 표시 줄이 작동하지 않습니다. 진행 상황에 대한 세부 정보를 표시하려고합니다. 그러나 나는 할 수 없다, 내가 잘못한 것? 도와주세요. -Android Progress Bar가 작동하지 않습니다.

활동 파일 이름 MainActivity.java

package com.example.sqliteexample; 

import android.os.Bundle; 
import android.os.Handler; 
import android.app.Activity; 
import android.app.ProgressDialog; 
import android.view.Menu; 

public class MainActivity extends Activity { 
private Handler handler = new Handler(); 
private ProgressDialog dialog; 
@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 
    //dialog = ProgressDialog.show(this,getString(R.string.loading) ,getString(R.string.alignMsg)); 
    dialog = ProgressDialog.show(this,"Loading", "Loading the Image of the Day"); 
    Thread th = new Thread() 
    { 
     public void run() { 
      handler.post(
        new Runnable(){ 
         @Override 
         public void run() { 
          try { 
           Thread.sleep(10000); 
          } catch (InterruptedException e) { 
           e.printStackTrace(); 
          } 
          dialog.dismiss(); 
         }}); 
     }}; 
     th.start(); 
} 

@Override 
public boolean onCreateOptionsMenu(Menu menu) { 
    getMenuInflater().inflate(R.menu.main, menu); 
    return true; 
} 

}

+1

작동하지 않는다는 것은 무엇을 의미합니까? –

+0

디스플레이에 '오늘의 이미지로드 중'문자열이 표시되지 않습니다. –

+0

또한'Thread th = new Thread() {'와 관련된 줄을 제거하십시오. 완전히 무의미합니다. 당신은 이미'handler.post()'를 호출함으로써 또 다른 스레드를 만들었습니다. 사실, 응용 프로그램이 충돌하거나 LogCat에 아무것도 게시하지 않습니까? – PhpXp

답변

0

handler.postDelayed를 사용하여보십시오 :

dialog = ProgressDialog.show(this, 
     "Loading", "Loading the Image of the Day"); 
handler.postDelayed(runnable,10000); 
} 
Runnable runnable = new Runnable() { 
    @Override 
    public void run() { 
     /* dismiss dialog here*/ 
     dialog.dismiss(); 

     handler.removeCallbacks(runnable); 
    } 
}; 

하거나 구동 가능한 스레드 실행 방법 내부 대신 내부 Thread.sleep(10000);를 이동해야 할 당신은 Handler.post 방법으로 다음과 같이 전달하고 있습니다 :

Thread th = new Thread() 
    { 
     public void run() { 
      /** call Thread.Sleep here... **/ 
      Thread.sleep(10000); 
      handler.post(
      ....your code here.... 
+0

두 번째 솔루션이 유용하며 현재 잘 작동합니다. 고맙습니다. –

0

은 주 활동에서 정의되며 UI 스레드에서 실행됩니다. 10 초 동안 잠자기를 요청하면 UI 스레드에서 작동하지 않습니다.

진행률 표시 줄을 표시하고 10 초 후에 닫으려면 handler.postDelayed(Runnable r, long delayMillis)을 사용하십시오.

@Override 
protected void onCreate(Bundle savedInstanceState) 
{ 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 
    // dialog = ProgressDialog.show(this,getString(R.string.loading) ,getString(R.string.alignMsg)); 
    dialog = ProgressDialog.show(this, "Loading", "Loading the Image of the Day"); 
    handler.postDelayed(new Runnable() 
    { 
     @Override 
     public void run() 
     { 
      dialog.dismiss(); 
     } 
    }, 10000); 
} 

그것이 도움이되었습니다 희망 :

는 코드입니다.

관련 문제