1

FragmentActivity을 확장하는 메인 액티비티가 있고 내 주요 활동에 첨부 된 Navigation drawer이있는이 문제가 발생했습니다. 첫 번째 탐색에서는 세 개의 탭을 표시하는 FragmentStatePagerAdapter을 구현하는 사용자 지정 어댑터가있는 Fragment를 호출합니다. 각각의 탭은 ListFragments입니다. 이 목록의 모든 행을 클릭하면 다른 조각으로 이동합니다.이 모든 것이 제대로 작동 할 때까지 backstack을 구현하고 싶을 때 사용자가 세부 정보 페이지의 단추를 다시 누르면 다시 FragmentList 페이지로 돌아올 수 있습니다. 뒤로 버튼을 누르면 다시 FragmentList 페이지로 돌아가지만, 페이지가 비어있어 어떤 이유로 목록이 나타나지 않습니다. 로그를 확인한 후 데이터가 있음을 발견하고 코드의 마지막 비트까지 오류가 발생하지만 페이지가 비어있는 경우 아무거나 나 도와 줄 수 있습니까? 내가 어떤 탭의 목록에서 항목을 선택하면안드로이드 popBackStack이 ListFragment의 ListView를로드하지 않습니다

은 내가 가기 backstack에 트랜잭션을 추가하고 세부 조각로 이동 :

@Override 
public void onBackPressed(){ 
    Log.d("stack","back pressed"); 
    FragmentManager fm = getSupportFragmentManager(); 
    if (fm.getBackStackEntryCount() > 0) 
    {   
     //fm.popBackStack(); 
     boolean done = fm.popBackStackImmediate(); 
     Log.i("stack", String.valueOf(done)); 
    } else 
    { 
     Log.i("stack", "nothing on backstack, calling super"); 
     super.onBackPressed(); 
    } 
} 
:이가 내 주요 활동에

@Override 
public void onListItemClick(ListView l, View v, int position, long id) { 

    Fragment fragment = new LiveMatchDetailMainFragment(); 
    android.support.v4.app.FragmentManager fragmentManager = getFragmentManager(); 
    FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction(); 
    fragmentTransaction.replace(R.id.content_frame, fragment); 
    fragmentTransaction.addToBackStack("LiveFragment"); 
    fragmentTransaction.commit(); 
} 

은 정확한 탭으로 이동하여 목록에서 항목을 클릭했지만 단편은 비어 있습니다. FragmentList 페이지에서 내가 가진 : 사용자 정의 어댑터를 사용하여 목록을 작성하고, 나는이 방법이 호출로드 모든 데이터를 얻는 가기 backstack 팝업 때, 처음으로 잘 작동

@Override 
public void setUserVisibleHint(boolean isVisibleToUser) { 
    super.setUserVisibleHint(isVisibleToUser); 

    if (isVisibleToUser) { 
     LiveMatchList = new ArrayList<HashMap<String, Object>>(); 
     //Log.d("LiveMatchList setUserVisibleHint","setUserVisibleHint"); 
     new LoadUpcomingMatchList().execute(); 

    } 
} 

onPostExecute까지 내려 오는 하지만 목록이 표시되지 않습니다, 미안 해요 stackoverflow에 새로운 아니지만 이건 내 두 번째 질문 게시물 그래서 난 규칙을 올바르게 따르지 않을 수도 ...

답변

3

분명히 내가 문제를 해결 ... 나 FragmentActivity 내에서 프래그먼트 트랜잭션을 추가하고 내 onListItemClick() 콜백 메소드를 사용하여 FragmentActivity 메소드를 호출하여 트랜잭션을 실행해야합니다. 이온. EventFragment에서

교체 :

FragmentManager fragmentManager = getActivity().getSupportFragmentManager(); 
viewpager.setAdapter(new MyAdapter(fragmentManager)); 

로 :

viewpager.setAdapter(new MyAdapter(getChildFragmentManager())); 

이 주로 내 문제를 해결 getChildFragmentManager()했다.