2

활동 (Dashboard.java)에서 3 개의 Fragment를 표시하기 위해 View Pager를 사용하고 있습니다. 이전 활동 (Login.java)에서 단추를 클릭하면 활동이로드되고 두 개의 조각은 서버에서 가져온 목록보기를 표시합니다.View 호출기의 진행 대화 상자

문제는 서버에서 데이터를 가져와 목록보기로 채우는 데 3-7 초 이상 걸리는 것입니다. 그래서 ProgressDialog를 표시하여로드 상태를 표시하려고합니다.

조각에서 서버의 데이터를로드하기 위해 AsyncTask를 시도했습니다. 그것은 작동하지만 목록이 채워지기 전에 몇 초 후에 ProgressDialog 만 표시됩니다. 진행 대화 상자가 매우 늦게 나타나고있다 1. 2.에 지연이있다 : 또한 주요 활동 (Dashboard.java)

그래서이 문제가있는로드 버튼을 클릭에 지연이 발생 이전 활동 MainActivity (Dashboard.java)에 (Login.java) (때로는 검은 화면을 표시)

이것은 조각 내 AsyncTask를하다 사실

new AsyncTask<Void, Void, Void>() { 

      @Override 
      protected void onPostExecute(Void result) { 

        pd.dismiss(); 
       super.onPostExecute(result); 
      } 

      @Override 
      protected void onPreExecute() { 
       pd.show(); 
       super.onPreExecute(); 
      } 

      @Override 
      protected Void doInBackground(Void... params) { 


       NodeList nl = doc.getElementsByTagName(KEY_ITEM); 
       // looping through all item nodes <item> 
       for (int i = 0; i < nl.getLength(); i++) { 
        // creating new HashMap 
        HashMap<String, String> map = new HashMap<String, String>(); 
        Element e = (Element) nl.item(i); 
        // adding each child node to HashMap key => value 
        map.put(KEY_ID, parser.getValue(e, KEY_ID)); // id not using any 
                    // where 
        map.put(KEY_NAME, parser.getValue(e, KEY_NAME)); 

        // adding HashList to ArrayList 
        menuItems.add(map); 
       } 

           return null; 
      } 
     }.execute(); 

어디 내가해서 ProgressDialog를 사용해야합니까 , MainActivity (Dashboard.java) 또는 Fragment.java? 나를 올바른 길로 인도하십시오.

EDIT 실제로 진행률 대화 상자로 조각을로드하는 가장 좋은 방법은 무엇입니까? (단편 서버에서 채워 목록보기 있습니다)

답변

0

신경 끄시 고,

1

는 두 가지 해결책이 될 수 있습니다 ..

  1. 시작 AsyncTask로그인에서 Dashboard.java을보고 당신의시. java 활동을 시작하고 onPostExecute()의 활동 코드 시작을 AsyncTask으로 설정하십시오. 파편에 대한 완전한 데이터가있을 때 Dashboard.java 액티비티를로드하는 데 도움이됩니다.

  2. onCreate()의 AsyncTask를 시작하십시오. Dashboard.java. 그리고 AsyncTask를의 onPreExecute()에게 ProgressDailog를 표시하고 그것을 onPostExecute()을 취소하지만 사용자가 Dashboard.java 활동을 위해 검은 색 화면을 볼 수 있도록이 당신은 조각에 대한 몇 가지 pre-design layout 있습니다.

+0

두 번째 방법은 작동하지 않습니다()는 doInBackground .. 'fragments.add (Fragment.instantiate (이, MenuContact.class을하는 방법을 측면 쓰기 내 실수였다. getName())); \t \t fragments.add (Fragment.instantiate (this, MenuDash.class.getName())); \t \t fragments.add (Fragment.instantiate (this, MenuHistory.class.' MAIN ACTIVITY –

+0

의 프래그먼트 호출입니다. ProgressDialog가 표시되지만 모든 프래그먼트를로드 한 후에 만 ​​문제가 발생합니다. 몇 초 동안 화면이 멈추고 가져온 데이터와 함께 PD가 표시됩니다. 사실 저는 PD를 처음부터 보여줄 필요가 있습니다. 나 좀 도와 줄 수있어? –