2015-01-26 1 views
0

많은 작업을 수행하는 조각 트랜잭션에 대한 진행 대화 상자를 표시 할 수 없습니다. 내가 이것을 달성하기 위해 노력하고 '현재의 방법은 다음과 같습니다조각 트랜잭션 진행 대화 상자

주요 활동에서 onCreate :

protected void onCreate(Bundle savedInstanceState) { 
super.onCreate(savedInstanceState); 
setContentView(R.layout.activity_main); 
Fragment myFragment = new MyFragment(); 
fragmentTransaction.add(R.id.container,myFragment).commit(); 
} 

그리고 내 조각 클래스 :

public class MyFragment extends Fragment { 

public MyFragment() { 
} 

@Override 
public View onCreateView(LayoutInflater inflater, ViewGroup container, 
         Bundle savedInstanceState) { 
    View rootView = inflater.inflate(R.layout.fragment_list, container, false); 
    return rootView; 
} 

@Override 
public void onStart() { 
    super.onStart(); 
    ProgressDialog mProgressDialog = ProgressDialog.show(getActivity(), "title", "msg"); 
    mProgressDialog.setCancelable(true); 
    mProgressDialog.show(); 

    // Time taking code 

    mProgressDialog.dismiss(); 
} 

이 그냥 작업까지 검은 색 화면을 보여주고있다 완성 됐습니다.

+1

UI가 아닌 스레드에서 코드를 가져 가면 모든 것이 잘 작동합니다. – Rohit5k2

답변

0

시간이 걸리는 작업은 백그라운드 스레드에서 수행해야합니다. 당신은 이런 식으로 작업을 수행 할 수 있습니다

@Override 
public void onStart() { 
     super.onStart(); 
     final ProgressDialog progressDialog = ProgressDialog.show(getActivity(), "title", "msg"); 
     progressDialog.setCancelable(true); 
     progressDialog.show(); 

     final Handler handler = new Handler(); 
     new Thread(){ 

      @Override 
      public void run() { 

       // TODO: your time taking code runs here. 

       handler.post(new Runnable() { 

        @Override 
        public void run() { 
         // close the progress dialog. 
         progressDialog.dismiss();       
        } 
       }); 
      } 

     }.start();  
    } 
0

당신은 onPreExecute의 대화를 시간이 많이 걸리는 일을하고 표시하려면 AsyncTask를 사용 onPostExcute 그것을 dimiss 수 있습니다.