1
하나의 액티비티가있는 애플리케이션을 개발했으며이 액티비티에는 서랍과 여러 조각이 여러 조각으로 나뉘어 있습니다. 다중 조각 인스턴스를 완벽하게 보여주는보기 페이저를 설정했습니다. 하지만 뷰 호출기 (중첩 된 조각)에서 다른 프래그먼트를 열면 해당 버튼이 눌려 졌을 때 전체 응용 프로그램이 닫히기 때문에 조각 관리자의 백 스택에서 자식 조각 관리자를 사용하므로 누를 때처럼 구현하고 싶습니다. 다시 오픈 이전의 단편이다안드로이드 뷰 호출기의 중첩 된 조각에 대한 백 스택 문제 발행일
내 코드는
pageAdapter = new MyPageAdapter(getChildFragmentManager(), Global.DatabaseHandler.DisplayTempleList(), activityType);
pager = (ViewPager) v.findViewById(R.id.pager);
pager.setAdapter(pageAdapter);
indicator = (TabPageIndicator) v.findViewById(R.id.indicator);
indicator.setViewPager(pager);
return v;
}
// private List<Fragment> getFragments() {
//
// List<Fragment> fList = new ArrayList<Fragment>();
// //TempleLists = Global.DatabaseHandler.DisplayTempleList();
//
// for (TempleDetail templeDetail : TempleLists.Temple) {
// if (activityType == Global.About) {
// fList.add(new About_Fragment(templeDetail.temple_id, templeDetail.temple_name));
// } else if (activityType == Global.DailyDarshan) {
// fList.add(new DailyDarshan_Activity(templeDetail.temple_id, templeDetail.temple_name));
// } else if (activityType == Global.PhotoGallery) {
// fList.add(new PhotoGallery_Activity(templeDetail.temple_id, templeDetail.temple_name));
// }
// }
//
// return fList;
// }
private class MyPageAdapter extends FragmentPagerAdapter {
private HashMap<Integer, Fragment> fragments;
private TempleList TempleLists;
private String ActivityType;
//public MyPageAdapter(FragmentManager fm, List<Fragment> fragments) {
public MyPageAdapter(FragmentManager fm, TempleList templeList, String activityType) {
super(fm);
fragments = new HashMap<Integer, Fragment>();
TempleLists = templeList;
ActivityType = activityType;
}
@Override
public Fragment getItem(int position) {
if (!fragments.containsKey(position)) {
Fragment fragment = new Sub_container(TempleLists.Temple.get(position).temple_id,
TempleLists.Temple.get(position).temple_name, ActivityType);
fragments.put(position, fragment);
}
return this.fragments.get(position);
}
@Override
public int getCount() {
return TempleLists.Temple.size();
}
@Override
public CharSequence getPageTitle(int position) {
//return TempleLists.Temple.get(position % TempleLists.Temple.size()).temple_name.toUpperCase();
return TempleLists.Temple.get(position).temple_name.toUpperCase();
}
}
}
other fragment
Fragment fragment = new FullImageActivity();
FragmentTransaction transaction = getFragmentManager().beginTransaction();
transaction.add(R.id.sub_container, fragment);
transaction.addToBackStack(null);
transaction.commit();
Bundle args = new Bundle();
args.putInt(Global.Id, position);
args.putString(Global.TempleId, getArguments().getString(Global.TempleId));
fragment.setArguments(args);
내 다시 홍보 ESSID와는
@Override
public void onBackPressed() {
FragmentManager fragmentManager = getSupportFragmentManager();
Log.i("-----------------", "---------------" + getFragmentManager().getBackStackEntryCount() + "---------");
if (fragmentManager.getBackStackEntryCount() == 0) {
if (doubleBackToExitPressedOnce) {
super.onBackPressed();
return;
}
this.doubleBackToExitPressedOnce = true;
Global.interstitial.loadAd(Global.adRequest);
Toast.makeText(this, "Press Again to Exit", Toast.LENGTH_SHORT).show();
} else {
fragmentManager.popBackStack();
removeCurrentFragment();
}
}
모호한 호출을 표시하는 getclass(). 둘 다 ... –
문자열 형식으로 호출하는 클래스 이름을 사용할 수 있습니다. 이것은 조각의 백 스택 개념에서 조각을 식별하기위한 문자열 형식입니다 ----------------- -------------------------------------------- 사용하려는 경우 getclass()를 호출하면 this를 this와 같은 객체로 캐스팅 할 수 있습니다. ((Object) fragment) .getClass(); –
잘 작동하지 않는다 .... 그 여전히 가까운 전체 앱 .. –