【Android】监听viewpager子页面里面的Button按钮
2015-08-13 10:38
483 查看
最近做项目遇到Viewpager+Fragment滑动页面,要监听子页面中的按钮,在网上查了些解决办法:
办法一:
这种方法是在适配器初始化中进行监听,有人亲测通过,但是我继承FragmentPagerAdapter,未果。
@Override
public Object instantiateItem(final View view, int position) {
switch (position) {
case 0:
btnKnowledge = (Button)mListViews.get(position).findViewById(R.id.tab_knowledge);
btnKnowledge.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
Toast.makeText(HomeActivity.this, "XXXXXX", 1).show();
}
});
break;
default:
break;
}
((ViewPager) view).addView(mListViews.get(position), 0);
return mListViews.get(position);
}
方法二:
这个方法也是我自己用的方法,得以解决。不多说,直接上代码。
private class ShinStarterHelpPageAdapter extends FragmentPagerAdapter {
public ShinStarterHelpPageAdapter(FragmentManager fm) {
super(fm);
}
@Override
public Fragment getItem(int position) {
StarterHelpPageFragment fragment = null;
if (position != 2)
fragment = new StarterHelpPageFragment();
else
fragment = new StarterHelpFirstPageFragment(selectIRM03Listener, selectIRM01Listener, selectIRM02Listener);
Bundle bundle = new Bundle();
bundle.putInt(StarterHelpPageFragment.KEY_RES_ID, resIds[position]);
fragment.setArguments(bundle);
return fragment;
}
@Override
public int getCount() {
return resIds.length;
}
}
public class StarterHelpFirstPageFragment extends StarterHelpPageFragment {
private OnClickListener selectIRM03Listener = null;
private OnClickListener selectIRM02Listener = null;
private OnClickListener selectIRM01Listener = null;
public StarterHelpFirstPageFragment(OnClickListener selectIRM03Listener, OnClickListener selectIRM01Listener, OnClickListener selectIRM02Listener) {
this.selectIRM01Listener = selectIRM01Listener;
this.selectIRM02Listener = selectIRM02Listener;
this.selectIRM03Listener = selectIRM03Listener;
}
@Override
public void onViewCreated(View view, Bundle savedInstanceState) {
super.onViewCreated(view, savedInstanceState);
Button again_connect = (Button) view.findViewById(R.id.again_connect);
Button histus = (Button) view.findViewById(R.id.histus);
Button st_search = (Button) view.findViewById(R.id.st_search);
again_connect.setOnClickListener(this.selectIRM01Listener);
histus.setOnClickListener(this.selectIRM02Listener);
st_search.setOnClickListener(this.selectIRM03Listener);
}
}
private OnClickListener selectIRM03Listener = new OnClickListener() {
@Override
public void onClick(View v) {
}
};
private OnClickListener selectIRM01Listener = new OnClickListener() {
@Override
public void onClick(View v) {
}
};
private OnClickListener selectIRM02Listener = new OnClickListener() {
@Override
public void onClick(View v) {
}
};
这种方法就是直接将第三个页面给抽出来,单独进行监听,然后再放到Viewpager里面,本人亲测,代码通过编译,希望对大家有帮助。
办法一:
这种方法是在适配器初始化中进行监听,有人亲测通过,但是我继承FragmentPagerAdapter,未果。
@Override
public Object instantiateItem(final View view, int position) {
switch (position) {
case 0:
btnKnowledge = (Button)mListViews.get(position).findViewById(R.id.tab_knowledge);
btnKnowledge.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
Toast.makeText(HomeActivity.this, "XXXXXX", 1).show();
}
});
break;
default:
break;
}
((ViewPager) view).addView(mListViews.get(position), 0);
return mListViews.get(position);
}
方法二:
这个方法也是我自己用的方法,得以解决。不多说,直接上代码。
private class ShinStarterHelpPageAdapter extends FragmentPagerAdapter {
public ShinStarterHelpPageAdapter(FragmentManager fm) {
super(fm);
}
@Override
public Fragment getItem(int position) {
StarterHelpPageFragment fragment = null;
if (position != 2)
fragment = new StarterHelpPageFragment();
else
fragment = new StarterHelpFirstPageFragment(selectIRM03Listener, selectIRM01Listener, selectIRM02Listener);
Bundle bundle = new Bundle();
bundle.putInt(StarterHelpPageFragment.KEY_RES_ID, resIds[position]);
fragment.setArguments(bundle);
return fragment;
}
@Override
public int getCount() {
return resIds.length;
}
}
public class StarterHelpFirstPageFragment extends StarterHelpPageFragment {
private OnClickListener selectIRM03Listener = null;
private OnClickListener selectIRM02Listener = null;
private OnClickListener selectIRM01Listener = null;
public StarterHelpFirstPageFragment(OnClickListener selectIRM03Listener, OnClickListener selectIRM01Listener, OnClickListener selectIRM02Listener) {
this.selectIRM01Listener = selectIRM01Listener;
this.selectIRM02Listener = selectIRM02Listener;
this.selectIRM03Listener = selectIRM03Listener;
}
@Override
public void onViewCreated(View view, Bundle savedInstanceState) {
super.onViewCreated(view, savedInstanceState);
Button again_connect = (Button) view.findViewById(R.id.again_connect);
Button histus = (Button) view.findViewById(R.id.histus);
Button st_search = (Button) view.findViewById(R.id.st_search);
again_connect.setOnClickListener(this.selectIRM01Listener);
histus.setOnClickListener(this.selectIRM02Listener);
st_search.setOnClickListener(this.selectIRM03Listener);
}
}
private OnClickListener selectIRM03Listener = new OnClickListener() {
@Override
public void onClick(View v) {
}
};
private OnClickListener selectIRM01Listener = new OnClickListener() {
@Override
public void onClick(View v) {
}
};
private OnClickListener selectIRM02Listener = new OnClickListener() {
@Override
public void onClick(View v) {
}
};
这种方法就是直接将第三个页面给抽出来,单独进行监听,然后再放到Viewpager里面,本人亲测,代码通过编译,希望对大家有帮助。
相关文章推荐
- Android开发必知 九种对话框的实现方法
- Android之drawable state各个属性详解
- 白话Android进程交互之--Binder原理
- Android中的调试
- Android性能优化典范(二)
- Android studio中正确引入so文件的方法
- overridePendingTransition的简介
- Android性能优化典范(一)
- Android 视图切换库的使用 - SwitichLayout
- Android之如何给ListView添加监听方法
- Android开发手册 (Android的手工教程MtAndroid开发手册)
- Android中图片对比并生成对比图
- Android出现W/System.err(384): java.io.FileNotFoundException: /mnt/sdcard/cache/XXX
- android内部存储外部存储以及assets文件的操作一些操作
- 整理 Android 横竖屏切换时候activity的生命周期
- Android验证手机号、用户名正则表达式
- Android中MVP
- android layout_weight 使用总结
- Android studio 报错 gradel project sync failed Error:Cause: peer not authenticated
- android 进行多文件压缩处理格式zip