Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/194.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 将OnClick设置为ViewPager不起作用_Android_Android Viewpager - Fatal编程技术网

Android 将OnClick设置为ViewPager不起作用

Android 将OnClick设置为ViewPager不起作用,android,android-viewpager,Android,Android Viewpager,我在实现对ViewPager的单击时遇到一些问题 我希望这样,当我点击我的一张图片被ViewPager显示时,它会显示一条toast消息,告诉我这是可行的 到目前为止,在执行此操作时单击其中一个项目时没有发生任何情况 任何帮助都将不胜感激 ViewPager XML: <?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/a

我在实现对ViewPager的单击时遇到一些问题

我希望这样,当我点击我的一张图片被ViewPager显示时,它会显示一条toast消息,告诉我这是可行的

到目前为止,在执行此操作时单击其中一个项目时没有发生任何情况

任何帮助都将不胜感激

ViewPager XML:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:ads="http://schemas.android.com/apk/lib/com.google.ads"
android:id="@+id/rellayout"
android:layout_width="fill_parent"
android:layout_height="fill_parent" >

<android.support.v4.view.ViewPager
    android:id="@+id/pager"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent" >
</android.support.v4.view.ViewPager>

<com.google.ads.AdView
    android:id="@+id/ad"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignParentBottom="true"
    android:layout_centerHorizontal="true"
    ads:adSize="BANNER"
    ads:adUnitId="AdIdHere"
    ads:loadAdOnCreate="true" >
</com.google.ads.AdView>


</RelativeLayout>
片段详细信息XML:

<?xml version="1.0" encoding="utf-8"?>


<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent" >

<ProgressBar
    style="?android:attr/progressBarStyleLarge"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_gravity="center" />

<com.question.ui.RecyclingImageView
    android:id="@+id/imageView"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:contentDescription="@string/imageview_description" />

</FrameLayout>

您需要在ImageDetailFragment中的视图上设置单击事件

private Context context;

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
    Bundle savedInstanceState) {

     final View v = inflater.inflate(R.layout.image_detail_fragment,
        container, false);

      context = v.getContext();

        v.setOnClickListener(new OnClickListener() {

        @Override
        public void onClick(View arg0) {
            Toast.makeText(context, "Cilcked..",Toast.LENGTH_SHORT).show();

        }
    });
mImageView = (ImageView) v.findViewById(R.id.imageView);
return v;
 }

你必须设置onClick on fragment而不是view pager。@Indiandroid我以前从未这样做过,你能详细说明一下吗?在ImageDetailFragment中,你必须设置onClick on fragment view…这样每当你点击view pager时,它就会捕捉到孩子的点击事件,并显示你的Toast.:)@Indiandroid我已经添加了我的ImageDetailFragment,你能给我看一下吗?我已经把你给我的密码输入我的密码并更新了我的答案。当我单击“静止”时,土司不会显示。@杰克,你在哪里单击?你能显示图像\u细节\u片段布局吗?当我单击每个图像时,土司仍然不会显示任何内容?这很奇怪,一切都有道理。您可以在我更改代码的地方看到我的答案。@Jack remove view pager onClick事件。什么意思,我看不到view pager onClick?
public class Batmanark extends FragmentActivity implements OnClickListener {
private static final String IMAGE_CACHE_DIR = "images";
public static final String EXTRA_IMAGE = "extra_image";

private ImagePagerAdapter mAdapter;
private ImageFetcher mImageFetcher;
private ViewPager mPager;

@TargetApi(11)
@Override
public void onCreate(Bundle savedInstanceState) {
    if (BuildConfig.DEBUG) {
        Utils.enableStrictMode();
    }
    super.onCreate(savedInstanceState);
    setContentView(R.layout.image_detail_pager);

    AdView ad = (AdView) findViewById(R.id.ad);
    ad.loadAd(new AdRequest());

    final DisplayMetrics displayMetrics = new DisplayMetrics();
    getWindowManager().getDefaultDisplay().getMetrics(displayMetrics);
    final int height = displayMetrics.heightPixels;
    final int width = displayMetrics.widthPixels;


    final int longest = (height > width ? height : width) / 2;

    ImageCache.ImageCacheParams cacheParams = new ImageCache.ImageCacheParams(
            this, IMAGE_CACHE_DIR);
    cacheParams.setMemCacheSizePercent(0.25f); 


    mImageFetcher = new ImageFetcher(this, longest);
    mImageFetcher.addImageCache(getSupportFragmentManager(), cacheParams);
    mImageFetcher.setImageFadeIn(false);


    mAdapter = new ImagePagerAdapter(getSupportFragmentManager(),
            Images.imageUrlsBatmanark.length);
    mPager = (ViewPager) findViewById(R.id.pager);
    mPager.setAdapter(mAdapter);
    mPager.setPageMargin((int) getResources().getDimension(
            R.dimen.image_detail_pager_margin));
    mPager.setOffscreenPageLimit(2);


    getWindow().addFlags(LayoutParams.FLAG_FULLSCREEN);


    if (Utils.hasHoneycomb()) {
        final ActionBar actionBar = getActionBar();


        actionBar.setDisplayShowTitleEnabled(false);
        actionBar.setDisplayHomeAsUpEnabled(true);


        mPager.setOnSystemUiVisibilityChangeListener(new View.OnSystemUiVisibilityChangeListener() {
            @Override
            public void onSystemUiVisibilityChange(int vis) {
                if ((vis & View.SYSTEM_UI_FLAG_LOW_PROFILE) != 0) {
                    actionBar.hide();
                } else {
                    actionBar.show();
                }
            }
        });


        mPager.setSystemUiVisibility(View.SYSTEM_UI_FLAG_LOW_PROFILE);
        actionBar.hide();
    }


    final int extraCurrentItem = getIntent().getIntExtra(EXTRA_IMAGE, -1);
    if (extraCurrentItem != -1) {
        mPager.setCurrentItem(extraCurrentItem);
    }
}

@Override
public void onResume() {
    super.onResume();
    mImageFetcher.setExitTasksEarly(false);
}

@Override
protected void onPause() {
    super.onPause();
    mImageFetcher.setExitTasksEarly(true);
    mImageFetcher.flushCache();
}

@Override
protected void onDestroy() {
    super.onDestroy();
    mImageFetcher.closeCache();
}

@Override
public boolean onOptionsItemSelected(MenuItem item) {
    switch (item.getItemId()) {
    case android.R.id.home:
        NavUtils.navigateUpFromSameTask(this);
        return true;
    case R.id.clear_cache:
        mImageFetcher.clearCache();
        Toast.makeText(this, R.string.clear_cache_complete_toast,
                Toast.LENGTH_SHORT).show();
        return true;
    }
    return super.onOptionsItemSelected(item);
}

@Override
public boolean onCreateOptionsMenu(Menu menu) {
    getMenuInflater().inflate(R.menu.main_menu, menu);
    return true;
}

public ImageFetcher getImageFetcher() {
    return mImageFetcher;
}


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(Images.imageUrlsBatmanark[position]);
    }
}


@TargetApi(11)
@Override
public void onClick(View v) {
    final int vis = mPager.getSystemUiVisibility();
    if ((vis & View.SYSTEM_UI_FLAG_LOW_PROFILE) != 0) {
        mPager.setSystemUiVisibility(View.SYSTEM_UI_FLAG_VISIBLE);
    } else {
        mPager.setSystemUiVisibility(View.SYSTEM_UI_FLAG_LOW_PROFILE);
    }
}
}
private Context context;

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
    Bundle savedInstanceState) {

     final View v = inflater.inflate(R.layout.image_detail_fragment,
        container, false);

      context = v.getContext();

        v.setOnClickListener(new OnClickListener() {

        @Override
        public void onClick(View arg0) {
            Toast.makeText(context, "Cilcked..",Toast.LENGTH_SHORT).show();

        }
    });
mImageView = (ImageView) v.findViewById(R.id.imageView);
return v;
 }