android - On Click 监听器在 View Pager 中不起作用

标签 android android-viewpager

我在 ViewPager 中有两个页面。在这两个页面中,我有按钮,我必须对其执行操作。按钮的单击监听器在第二页上工作得很好,但在第一页上不起作用。 这是我尝试过的 Activity 和适配器类

    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);
    }


}

而适配器类如下

    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();
        }

    }

}

最佳答案

如果你想捕捉按钮点击并做一些事情,最好用最简单的方式来做......
代码越少越好!
我们开始了;
在按钮组件(或任何组件)的 layout.xml 中应该有这个

android:onClick="onClick_function"  

然后你可以在你的代码中自动捕获这个事件,你只需要一个同名的函数

public void onClick_function(View v) {
// here we go!
}

关于android - On Click 监听器在 View Pager 中不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17853725/

相关文章:

android - ViewPager 的奇怪行为

android - ViewPager 中的软键盘

java - 如何禁用此特定 View 页面中的滑动功能?

Android JobIntentService - onStartCommand 与 onHandleWork

android - 如何在我的 Android Studio 中更改 android\avd 的路径

android - findFragmentByTag 始终返回 null

android - 从属于 ViewPager 的 fragment 创建新 fragment

java - 处理 TabLayout 的多种场景

Android:从选项菜单打开自定义弹出对话框

android - 如何在Android中将不安全的HttpClient传递给Volley请求