在点击侦听器未在查看传呼机工作 [英] On Click listener is not working in View Pager

查看:131
本文介绍了在点击侦听器未在查看传呼机工作的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有在ViewPager.In两页我有按键的两页,我必须做出对them.On点击监听行动按钮,工作第二个页面完全正常,这是不工作的第一页。
以下是我已经尝试了活动和适配器类

 公共类MainActivity延伸活动{
    INT noofsize = 2;    @覆盖
    保护无效的onCreate(捆绑savedInstanceState){
        super.onCreate(savedInstanceState);
        的setContentView(R.layout.activity_main);
        ViewPagerAdapter适配器=新ViewPagerAdapter(MainActivity.this,
                noofsize);
        ViewPager myPager =(ViewPager)findViewById(R.id.reviewpager);
        myPager.setAdapter(适配器);
        myPager.setCurrentItem(0);
    }
}

和适配器类如下:

 公共类ViewPagerAdapter扩展PagerAdapter实现OnClickListener {
    INT大小;
    活动的行为;
    查看布局;
    TextView的页面编号;
    点击按钮;    公共ViewPagerAdapter(MainActivity mainActivity,诠释noofsize){
        // TODO自动生成构造函数存根
        大小= noofsize;
        ACT = mainActivity;
    }    @覆盖
    公众诠释的getCount(){
        // TODO自动生成方法存根
        返回的大小;
    }    @覆盖
    公共对象instantiateItem(View容器,INT位置){
        // TODO自动生成方法存根
        LayoutInflater吹气=(LayoutInflater)行为
                .getSystemService(Context.LAYOUT_INFLATER_SERVICE);
        布局= inflater.inflate(R.layout.pages,NULL);
        页面编号=(TextView中)layout.findViewById(R.id.pagenumber);
        pagenumber.setText(现在你的页面+位置);
        点击=(按钮)layout.findViewById(R.id.click);
        click.setOnClickListener(本);
        ((ViewPager)容器).addView(布局,0);
        返回布局;
    }    @覆盖
    公共无效destroyItem(查看为arg0,ARG1 INT,对象ARG2){
        ((ViewPager)为arg0).removeView((查看)ARG2);
    }    @覆盖
    公共布尔isViewFromObject(查看为arg0,ARG1对象){
        返回将arg0 ==((查看)ARG1);
    }    @覆盖
    公共Parcelable saveState和(){
        返回null;
    }    @覆盖
    公共无效的onClick(视图v){
        // TODO自动生成方法存根
        如果(V ==点击){
            Toast.makeText(法,单击事件被称为,Toast.LENGTH_SHORT)
                    。显示();
        }    }}


解决方案

我面对这一同样的问题,在我的情况在instantiateItem集点击监听解决。你可以做这样的事情也许它可以帮助的

  click.setOnClickListener(新OnClickListener(){        @覆盖
        公共无效的onClick(视图v){
            // TODO自动生成方法存根        }
    });

您可以试试这个也是

  click.setOnClickListener(行为);

I am having two pages in ViewPager.In the two pages I am having buttons for which i have to make action on them.On click listener for button is working perfectly fine for second page and it is not working for first page. Here is the activity and adapter class which i have tried

    public class MainActivity extends Activity {
    int noofsize = 2;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        ViewPagerAdapter adapter = new ViewPagerAdapter(MainActivity.this,
                noofsize);
        ViewPager myPager = (ViewPager) findViewById(R.id.reviewpager);
        myPager.setAdapter(adapter);
        myPager.setCurrentItem(0);
    }


}

And the adapter class is as follows

    public class ViewPagerAdapter extends PagerAdapter implements OnClickListener {
    int size;
    Activity act;
    View layout;
    TextView pagenumber;
    Button click;

    public ViewPagerAdapter(MainActivity mainActivity, int noofsize) {
        // TODO Auto-generated constructor stub
        size = noofsize;
        act = mainActivity;
    }

    @Override
    public int getCount() {
        // TODO Auto-generated method stub
        return size;
    }

    @Override
    public Object instantiateItem(View container, int position) {
        // TODO Auto-generated method stub
        LayoutInflater inflater = (LayoutInflater) act
                .getSystemService(Context.LAYOUT_INFLATER_SERVICE);
        layout = inflater.inflate(R.layout.pages, null);
        pagenumber = (TextView) layout.findViewById(R.id.pagenumber);
        pagenumber.setText("Now your in Page"+position);
        click = (Button) layout.findViewById(R.id.click);
        click.setOnClickListener(this);
        ((ViewPager) container).addView(layout, 0);
        return layout;
    }

    @Override
    public void destroyItem(View arg0, int arg1, Object arg2) {
        ((ViewPager) arg0).removeView((View) arg2);
    }

    @Override
    public boolean isViewFromObject(View arg0, Object arg1) {
        return arg0 == ((View) arg1);
    }

    @Override
    public Parcelable saveState() {
        return null;
    }

    @Override
    public void onClick(View v) {
        // TODO Auto-generated method stub
        if (v == click) {
            Toast.makeText(act, "click event called", Toast.LENGTH_SHORT)
                    .show();
        }

    }

}

解决方案

I Face this same problem,In my case it solved by set click listener in instantiateItem. You can do something like this may it can helpful

click.setOnClickListener(new OnClickListener() {

        @Override
        public void onClick(View v) {
            // TODO Auto-generated method stub

        }
    });

or

You Can try this also

 click.setOnClickListener(act);

这篇关于在点击侦听器未在查看传呼机工作的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆