2014-06-10 3 views
1

간단한 드릴 다운 애플리케이션 (비교적)이 있습니다.안드로이드의 ListFragment가 뒤로 버튼에 표시되지 않습니다.

프래그먼트를 포함하고 전환하는 하나의 활동 (MainActivity)이 있습니다.

public void goToPartnumbers(){ 
    FragmentTransaction ft = getSupportFragmentManager().beginTransaction(); 
    ft.setCustomAnimations(R.anim.slide_in_right, R.anim.slide_out_left, R.anim.slide_in_right, R.anim.slide_out_left); 
    ft.replace(R.id.container, new IdentifierFragment()).addToBackStack("partnumber").commit(); 
} 

IdentifierFragment

는 라 http://www.androidhive.info/2013/10/android-tab-layout-with-swipeable-views-1/

public class IdentifierFragment extends Fragment implements ActionBar.TabListener { 
private ViewPager viewPager; 
private FragmentStatePagerAdapter mAdapter; 
private ActionBar actionBar; 
private MainActivity mContext; 
// Tab titles 
private String[] tabs = { "Part Numbers", "OEM Numbers" }; 

public IdentifierFragment() { 
    // Required empty public constructor 
} 

@Override 
public View onCreateView(LayoutInflater inflater, ViewGroup container, 
         Bundle savedInstanceState) { 
    // Inflate the layout for this fragment 
    View view = inflater.inflate(R.layout.partnumber_list, container, false); 
    // Initialization 
    mContext = (MainActivity) getActivity(); 
    viewPager = (ViewPager) view.findViewById(R.id.pager); 
    actionBar = mContext.getSupportActionBar(); 

    actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS); 
    resetAdapter(new IdentifierFragmentAdapter(mContext.getSupportFragmentManager())); 

    for (String tab_name : tabs) { 
     actionBar.addTab(actionBar.newTab().setText(tab_name) 
       .setTabListener(this)); 
    } 
    ...I can show you the rest but I don't think it's relevant 

    return view; 
} 

@Override 
public void onDetach(){ 
    super.onDetach(); 
    actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_STANDARD); 
    resetAdapter(null); 
} 

public void resetAdapter(FragmentStatePagerAdapter adapter){ 
    actionBar.removeAllTabs(); 
    viewPager.removeAllViews(); 
    mAdapter = adapter; 
    viewPager.setAdapter(mAdapter); 
} 

... 
} 

개의 하위 단편 CursorLoaders 둘이 ListFragments되는 탭 배치도이다. 행을 선택하면 IdentifierFragment 다음과 같은 방법을 사용하여 교체 : 나는 IdentifierFragment로 이동하면

public void goToGallery(){ 
    FragmentTransaction ft = getSupportFragmentManager().beginTransaction(); 
    galleryHandle = new GalleryFragment(); 
    HashMap<String,String> selection = new HashMap<String, String>(); 
    for (HashMap<? extends String, ? extends String> c : mCriteria){ 
     selection.putAll(c); 
    } 
    galleryHandle.setSelection(selection); 
    ft.replace(R.id.container, galleryHandle).addToBackStack("gallery").commit(); 
} 

, 그것은 잘 작동합니다. 그런 다음 행을 선택하고 상세보기로 이동할 수 있습니다. 자세히보기에서 뒤로 버튼을 사용하려고 시도했을 때 ViewPager을 얻었지만 ListViews을 얻지 못했습니다!

분명히 나는 ​​다른 코드가 필요한 모든 것을 제공 할 수 있습니다. 방금 관련성이 있다고 생각한 것을 제공했습니다.

나는 손실에 처해 있으며, 어떤 도움을 매우 좋아할 것입니다. 미리 감사드립니다!

답변

0

현재 조각을 바꿔서는 안되나요? 대신 .replace의 새 갤러리

public void goToGallery(){ 
    FragmentTransaction ft = getSupportFragmentManager().beginTransaction(); 
    galleryHandle = new GalleryFragment(); 
    HashMap<String,String> selection = new HashMap<String, String>(); 
    for (HashMap<? extends String, ? extends String> c : mCriteria){ 
     selection.putAll(c); 
    } 
    galleryHandle.setSelection(selection); 
    ft.add(R.id.container, galleryHandle).addToBackStack("gallery").commit(); 
} 
+0

에 갈 때 는 .add 사용 아마도 경우()()는 그 아니다. 그렇게하면 탭이 제거되고 (갤러리에 들어간 것처럼) 목록보기는 여전히 정면과 중앙에 있지만 (동작에는 응답하지 않습니다). – GaleDragon

관련 문제