간단한 드릴 다운 애플리케이션 (비교적)이 있습니다.안드로이드의 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
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
을 얻지 못했습니다!
분명히 나는 다른 코드가 필요한 모든 것을 제공 할 수 있습니다. 방금 관련성이 있다고 생각한 것을 제공했습니다.
나는 손실에 처해 있으며, 어떤 도움을 매우 좋아할 것입니다. 미리 감사드립니다!
에 갈 때 는 .add 사용 아마도 경우()()는 그 아니다. 그렇게하면 탭이 제거되고 (갤러리에 들어간 것처럼) 목록보기는 여전히 정면과 중앙에 있지만 (동작에는 응답하지 않습니다). – GaleDragon