2014-01-12 2 views
0
package com.example.progressdialog; 

import com.example.progressdialog.R; 

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

public class MainActivity extends Activity { 

    private ProgressDialog progress; 
    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 
     progress = new ProgressDialog(this); 
    } 


    public void open(View view){ 
     progress.setMessage("Start This Baby Up!"); 
     progress.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL); 
     progress.setIndeterminate(false); 
     progress.show(); 

    final int totalProgressTime = 100; 

    final Thread t = new Thread(){ 

    @Override 
    public void run(){ 

     int jumpTime = 0; 
     while(jumpTime < totalProgressTime){ 
     try { 
      sleep(500); 
      jumpTime += 1; 
      progress.setProgress(0); 
     } catch (InterruptedException e) { 


      e.printStackTrace(); 
     } 

     } 

    } 
    }; 
    t.start(); 

    } 
    @Override 
    public boolean onCreateOptionsMenu(Menu menu) { 

     getMenuInflater().inflate(R.menu.main, menu); 
     return true; 
    } 
} 

진행률 표시 줄이 실제로 앞으로 진행되지 못하는 것 같습니다. 고정 된 0/100 막대 만 표시합니다. 나는 약 30 ~ 45 초가 걸리는 매끄러운 방식으로 앞으로 나아갈 수 있도록 노력 중이다. 누군가 내가 뭘 잘못하고 있다고 말할 수 있습니까? 나는 아주 새로운 자바! 감사!내 진행 표시 줄이 작동하지 않는 이유는 무엇입니까?

답변

1

인용 : 이것이 내가 생각

progress.setProgress(jumpTime); 

해야

progress.setProgress(0); 

?

또한 문제가 될 것입니다. 배경 스레드에서 UI 구성 요소에 액세스 할 수 없습니다. 핸들러를 사용해야합니다. 이 내용은 Example을 참조하십시오.

+0

여기에 새로 온 사람이므로이 대답을 해결책으로 설정하여 다른 커뮤니티 회원이 알고 있으므로이 질문을 볼 필요가 없습니다. –

관련 문제