progressdialog 이용해서
버튼 클릭->progressdialog.show()->사용자 정의 함수->progressdialog.dismiss() 순으로 실행하려고 했는데
밑에 코드를 실행시켜보면
버튼 클릭->사용자 정의 함수->progressdialog.show()->progressdialog.dismiss() 순으로 실행되어서 progressdialog가 실행되지 않는 것 처럼 보입니다. dismiss()를 주석처리하고 progressdialog.setCancelable(true)로 확인하여 알아냈습니다.
thread를 이용하지 않고 의도한 순서 대로 실행시키려면 어떻게 해야하나요?
질문 관련 코드만 뽑아서 밑에 첨부합니다...
public class Fragment2 extends Fragment {
private Button startBtn;
//progress dialog
ProgressDialog progressDialog, progressDialog2;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
view = inflater.inflate(R.layout.photo1, container, false);
startBtn = view.findViewById(R.id.startBtn);
progressDialog2 = new ProgressDialog(getActivity());
progressDialog2.setMessage("Learning...");
progressDialog2.setCancelable(true);
progressDialog2.setProgressStyle(android.R.style.Widget_ProgressBar_Horizontal);
startBtn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
progressDialog2.show();
start(v);
startBtn.setEnabled(false);
}
});
return view;
}
public void start(View v) {
//progressdialog.show() 동안 해야 할 작업들...
try { ... } catch(Exception e){ ... }
//progressdialog2.dismiss();
}
(+ 첨부한 파일에서 progressdialog를 두번 사용하려고 하는데 progressdialog라고 이름 붙인 것은 잘 실행됩니다. 그런데 dismiss() 명령어를
progressDialog.show();
SetImageView(); //직접 정의한 함수
progressDialog.dismiss();
순으로 넣으면 setimageview()->show()->dismiss() 순으로 실행되고
setimageview()라고 정의한 함수 안에서도 setimageview안에 .addListener를 사용하는데 이 리스너 안에 dismiss()를 넣어야 의도한 순서대로 실행되고
setimageview안+리스너밖에 dismiss()를 넣으면 setimageview()->show()->dismiss() 순입니다.
대체 왜 코드 입력한 순서대로 안되는 거죠... 인터넷에서 예제 찾아보면 꼭 thread 사용해야만 하는건 아닌것 같았고 thread 사용하려고 했을 때도 여전히 순서 문제에 다른 문제들이 추가적으로 발생해서 thread는 되도록 사용하고 싶지 않습니다....)