2016-09-18 3 views
0

조각이 있고 onStart()에서 15 초 동안 길게 많은 BD 쿼리를 만들었습니다. "로딩 서클"과 함께 진행 대화 상자를 보여 드리고자합니다. 내 앱에는 Main이 하나뿐입니다. 이것은 첫 번째 조각을 시작하고, 이것으로부터, 나는 다른 조각으로 점프하고, 다음 조각으로 점프합니다. 하나의 Fragment에서 다른 Fragment로 전달하려면 다음 정적 메서드를 사용합니다.단편 작업에 대한 대화 표시

public static startFragment(FragmentTransaction FT, Fragment newFragmentToOpen) 
{ 
    FT.replace(R.id.Container, newFragmentToOpen); 
    FT.addToBackStack(null); 
    FT.commit(); 
} 

나는 그 방법으로 진행 대화 상자를 시작하는 스레드를 만들려고했으나 제대로 작동하지 않았습니다. 조각의 OnCreate() 메서드에 대한 대화 상자를 시작하려고 시도하고 그 너무 작동하지 않았다.

어떻게해야합니까?

감사합니다.

(편집) 조각 내에서 onCreateView() 및 onViewCreated()에서 진행 대화 상자를 시작하려고했습니다. 그것은 작동하지 않았지만 단계별로 디버깅하는 경우, 흐름이 onStart() (DB를 사용하는 10 초 동안)로 이동하는 순간 ProgressDialog가 중지됩니다.

이 테스트에서는 ProgressDialog가 올바르게 표시되었음을 이해하지만 onStart()로 이동하면 사라집니다.

(편집)을 조각의 ONSTART()에서

문제는, 즉, 내가 요소를 addking, 뷰에서 일하고 있습니다. 이러한 요소가로드되는 동안 대화 상자가 표시되어야합니다. 사용자가 앱을로드하는 동안 sttoped 상태 인 것처럼 보이기 때문입니다. 조각의보기가 완전히로드 할 때 진행 대화 상자가 바로 시작하기 때문에,

public static startFragment(FragmentTransaction FT, Fragment newFragmentToOpen) 
{ 
    startProgressDialog(); 

    FT.replace(R.id.container, newFragmentToOpen); 
    FT.addToBackStack(null); 
    FT.commit(); 

    stopProgressDialog(); 
} 

하지만 나던 작업 :이 같은 뭔가가 필요합니다. 당신이 이후 onCreateView()에서 대화 상자를 보여주는 시도해야

+0

이전에 시도한 코드를 추가하여 잘 이해하는 데 도움이됩니다. – W4R10CK

+0

너무 많은 코드입니다. 게시물에서 내가 말했듯이, 내 앱은 Fragments에 중점을 둡니다. 나는 많은 조각들을 가지고 있는데, 그것들은 다음에 하나씩 부른다. 나는 그것을 위해 정적 메서드 (첫 번째 게시물에 표시)를 사용합니다. 프래그먼트에서 OnStart()에 DB 문장을 많이 작성한 다음로드하는 10 초 동안 표시해야합니다. –

답변

0

에 표시됩니다 어디 솔루션을 찾을 수 있습니다.

  1. STATIC vars를 생성하려면 : 여기에는 Fragment의 OnStart()에서 사용할 정보가 포함됩니다.
  2. 조각을 전환하기 전에 진행 대화 상자를 시작하십시오.
  3. 진행률 대화 상자를 시작한 후 스레드를 시작하십시오.
  4. (스레드에) 정보를 정적 막대에로드하십시오.
  5. (스레드에) 모든 정보를로드 한 후 진행률 대화 상자를 닫습니다.
  6. (속으로)로드 할 부분을 호출하십시오.
  7. 실의 끝.
  8. 조각으로, OnStart(), STATIC vars에서 정보를 가져옵니다.
0

은 UI 구성 요소가 Fragment

+0

그것은 작동하지 않습니다. 나는 이것을 가지고있다 : private static ProgressDialog espera; 무시 @ Null 허용 공공보기 onCreateView (LayoutInflater에서의 인플레이터, 뷰 그룹 용기, 번들 savedInstanceState) { 위해 LayoutInflater inflador @ ; inflador = inflater; espera = 새 ProgressDialog (inflador.getContext()); espera.setMessage ("Loading"); espera.setIndeterminate (true); espera.show(); 반환합니다. inflador.inflate (R.layout.fragment_clasificaciones_wec, container, false); } 나는 onStart()에서 "show"를 호출하려고 시도했다. –

+0

새로운 ProgressDialog (inflador.getContext()) 대신 새로운 ProgressDialog (getActivity())를 시도 했습니까 –

+0

너무 효과가 없습니다. onViewCreated() 메서드에서 작업하려고하지만 결과가 없습니다. –