2013-07-24 2 views
0

지금 이틀 동안이 문제가 남아 있지만, 나는 LaunchpadSectionFragment을 단편 A로, onClick 이벤트에서 별도의 클래스에서 다른 단편 (B)을 호출했습니다. ListFragment으로 확장되는 VideoPlayerFragment이 호출되어 표시됩니다.안드로이드 - 사용자 정의 어레이 어댑터 조각 안팎에서 호출되지 않음

문제 :

내가 프래그먼트를 클릭하면 그 조각 B가, 단편 B 안에리스트 뷰 포함 열립니다 - onCreateView()에에 다음, 데이터베이스에서 LoadAllProducts에 의해 채워집니다 반환 된 레코드를로드하는 사용자 정의 배열 어댑터를 호출 listView에. 이제 때때로 단편 B가 빈 화면을 표시 한 다음 이전 단편 (A)으로 돌아가서 B로 돌아 가면 ListView가 표시됩니다. 운이 좋다면 처음 Frag B가로드되면 listView가 표시됩니다. 나는 이것으로 고투하고있다. 고려해 주셔서 감사합니다.

public class CollectionDemoActivity extends FragmentActivity { 

    public static class DemoObjectFragment extends Fragment { 

     public static class LaunchpadSectionFragment extends ListFragment { 

        //onClick event opens another class which 
        //Extends another Fragment List 

        FragmentTransaction transaction = getChildFragmentManager().beginTransaction(); 
        transaction.replace(R.id.contentFragment, fragment1, fragMainGroups); 
        transaction.addToBackStack(fragMainGroups); 
        transaction.commit(); 

     } 
    } 
} 

VideoPlayerFragment.java

public class VideoPlayerFragment extends ListFragment { 

    public void onCreate(Bundle e){ 
       super.onCreate(e); 

       productsList = new ArrayList<HashMap<String, ?>>(); 

       db = new DatabaseHandler(getActivity().getBaseContext()); 
       mContext = getActivity(); 
       Log.d("Inside", "onCreate"); 

       //this task will populate to get Data from database 
       //I checked in logcat and there are rows returned. 
       LoadAllProducts task = new LoadAllProducts(); 
        task.execute(); 


     } 

     @Override 
     public View onCreateView(LayoutInflater inflater, ViewGroup container, 
        Bundle savedInstanceState) { 

     //This custom array adapter is not sometimes called, sometimes not 
     //It really happens, I not sure with the reason. I also put some displays 
     //logs and sometimes it will execute the code, sometimes does not. 

     MySimpleArrayAdapter adapter = new MySimpleArrayAdapter(
       mContext, productsList,R.layout.load_groups_activity_listview, FolderNameGroups, selectedId);   
       setListAdapter(adapter); 

     } 

}

+1

전후에 실행되고 있는지 확인 내 AsyncTaskonPostExecute() 안에 내 MySimpleArrayAdapter을 넣어야 할 데이터는'onCreateview()'가 끝나기 전에 데이터를 리턴하지 않을 것이라고 가정하는 것이 안전합니다. 그러면 어댑터는 빈'productsList'를 의지하게됩니다. 작업이 끝나면'onPostExecute()'에서 무엇을합니까? – Luksprog

+0

예! 고맙습니다. 내가 한 것처럼 onCreateView에 내 맞춤 arrray 어댑터를 호출하는 것이 중요하지 않다는 것을 깨달았습니다. 그래서 내가 한 일은, 커스텀 배열이 호출되어야하는'onPostExecute()'에 어댑터를 넘겼습니다. – rahstame

답변

0

감사 @Luksprog, 나에게 힌트를주는. 사용자 정의 배열 어댑터가 ListFragment 내에서 호출됩니다 있는지 확인하기 위해, 난 당신이 얻을 수있는`AsyncTask`를 사용할 때는 doBackground()

관련 문제