Android 개발자 문서의 BitMapFun 자습서를 따르고 있습니다. 필자는 Android/Java 프로그래밍에 대한 전반적인 새로운 경험이 있습니다.FragmentActivity에서 FragmentActivity의 데이터에 액세스하여 스 와이프 방지용으로 사용하는 방법
나는 등, 사용자가 확대 할 수 있습니다 doubletap (TouchImageView전화) 사용자 정의 이미지 뷰어를 만들어 ... 그리고 ImageDetailFragment 클래스를 적용했습니다. TouchImageView 클래스에서
나는 사용자가 여부를 확대하는 경우 감지 할 수있는 부울 변수를 가지고 있고, 이미지가 국경 측에있는 경우 경우에 그것은 또한 플래그를합니다 zoomedIn입니다. (따라서 zoomedIn 비트와 화면 경계선)이 논리를 적용하여 사용자가 다음/이전 페이지로 스크롤 할 수 있도록 ViewPager를 활성화하거나 비활성화합니다 (조각 읽기).이 ViewPager는 내가 왼쪽 또는 오른쪽으로합니다 (의 상태에 확대) 대신 이미지를 이동 이동하면 내 코드와 FragmentActivity
를 구현 ImageDetailActivity는 지금, 그것은 왼쪽 스크롤 대신 다음 조각에 갈거나 권리. 먼저 위 또는 아래로 이동하지 않으면 이미지를 스크롤 할 수 있습니다.
뷰티어를 사용/사용 중지하기 위해 내 Activiy에 대해 확인할 수있는 프래그먼트에 부울이 있으면 스크롤을 작동하는 방식을 '제어'할 수 있다고 생각했습니다.
이 논리가 맞습니까? 그렇다면 어떻게 DetailActivity 클래스의 Fragment에서 부울을 가져올 수 있습니까? 인터페이스를 사용하여 시도한 적이 있지만 onCreate 동안 단편화의 초기화로 인해 항상 잘못된 답장이 다시 표시됩니다. 따라서 표시되는 단편에서 런타임 중에 부울을 검색 할 수있는 무언가가 필요합니다. 그러나 아래 코드는 작동하지 않습니다.
public void onCreate(Bundle savedInstanceState) {
.... Do stuff like fetching images and caching etc ....
mPager = (ScrollViewPager) findViewById(R.id.pager);
mAdapter = new ImagePagerAdapter(getSupportFragmentManager(), imgs.getImagesLocal().length);
mPager.setAdapter(mAdapter);
mPager.setPageMargin((int) getResources().getDimension(R.dimen.image_detail_pager_margin));
mPager.setOffscreenPageLimit(2);
mPager.setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
//v.mAdapter.mCurItem
ScrollViewPager scroll = (ScrollViewPager) v;
//Log.d(TAG, "-----------------Current pos is "+ scroll.getCurrentItem());
ImageDetailFragment frag = (ImageDetailFragment) mAdapter.getItem(scroll.getCurrentItem());
if(frag.isPageChangeable())
{
Log.d(TAG, "-----------------Page is zoomed");
}else
{
Log.d(TAG, "----------------------Page is not Zoomed");
}
return false;
}
});
}
내가 가진 조각 초기화입니다.
/**
* The main adapter that backs the ViewPager. A subclass of FragmentStatePagerAdapter as there could be a large number of items in the ViewPager and we don't want to retain
* them all in memory at once but create/destroy them on the fly.
*/
private class ImagePagerAdapter extends FragmentStatePagerAdapter {
private final int mSize;
public ImagePagerAdapter(FragmentManager fm, int size) {
super(fm);
mSize = size;
}
@Override
public int getCount() {
return mSize;
}
@Override
public Fragment getItem(int position) {
return ImageDetailFragment.newInstance(imgs.getImagesLocal()[position], position, imgs.getImagesLocal().length);
}
}
당신은 전체 코드를 살펴하려는 경우 내가 발견이 stackoverflow post