最近做项目遇到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里面,本人亲测,代码通过编译,希望对大家有帮助。

【Android】监听viewpager子页面里面的Button按钮的更多相关文章

  1. flex 在父窗口监听弹出窗口里的某个按钮被点击

    flex 在父窗口监听弹出窗口里的某个按钮被点击 这样可以从子窗口拿回数据在父窗口处理数据,不必再子窗口中处理.在某些情形下省去了不少麻烦. /** * 右键菜单项单击事件 * changed by ...

  2. Android 监听返回键退出程序的两种实现

    1.Android 双击返回键退出程序 思路:用户按下返回键时设定一个定时器来监控是否2秒内实现了退出,如果用户没有接着按返回键,则清除第一次按返回键的效果,使程序还原到第一次按下返回键之前的状态.定 ...

  3. Android监听系统短信数据库变化-提取短信内容

    由于监听系统短信广播受到权限的限制,所以很多手机可能使用这种方式没法监听广播,从而没办法获取到系统短信,所以又重新开辟一条路. Android监听系统短信数据库内容变化使用场景: 1.监听短信数据库的 ...

  4. Android监听返回键、Home键+再按一次返回键退出应用

    Android监听返回键需重写onKeyDown()方法 Home键keyCode==KeyEvent.KEYCODE_HOME @Override public boolean onKeyDown( ...

  5. Android监听来电和去电

    要监听android打电话和接电话,只需下面2步骤1.第一步,写一个Receiver继承自BroadcastReceiver import android.app.Service; import an ...

  6. Android监听应用程序安装和卸载

    Android监听应用程序安装和卸载 第一. 新建监听类:BootReceiver继承BroadcastReceiver package com.rongfzh.yc; import android. ...

  7. lhgdialog: iframe页面里面的,确定,关闭、取消按钮的操作

    lhgdialog: iframe页面里面的,确定,关闭.取消按钮的操作 如果你正在用lhgdialog,用他人iframe,或者 content:'url:http://www.baidu.com/ ...

  8. Android监听ScrollView滑动到顶端和底部

    Android监听ScrollView滑动到顶端和底部     package cn.testscrollview; import android.os.Bundle; import android. ...

  9. 自己改写了一个图片局部放大的jquery插件页面里面的html代码少了,同一个页面可以调用多个

    自己改写了一个图片局部放大的jquery插件页面里面的html代码少了,同一个页面可以调用多个,兼容ie8以上浏览器,别忘了引用jquery,我用的jquery/1.11.0/其他版本没有测试,另外需 ...

随机推荐

  1. ubuntu中使用eclipse开发android,logcat显示问题

    〜/工作区/ .metadata / .plugins / org.eclipse.core.runtime / .settings / com.android.ide.eclipse.ddms.pr ...

  2. iOS  UDP 广播 AsyncSocket 用法

    因为业务需要,需要用广播发送一个字段,在iOS开发中,用到了AsynSocket. 1.定义一个属性,负责发送和接受数据 #define YX_Local_Host @"255.255.25 ...

  3. 使用 Visual Studio 2017 部署 Azure 应用服务的 Web 应用

    本快速入门介绍了如何使用 Visual Studio 2017 创建并部署 Azure Web 应用.在本教程中完成的所有操作均符合1元试用条件. 本快速入门介绍了如何使用 Visual Studio ...

  4. 如何修改tomcat的启动方式为 run

    tomcat根目录\bin\startup.bat,记事本打开,找到: call "%EXECUTABLE%" start %CMD_LINE_ARGS% :end 把start ...

  5. 最新深度ghost win7系统下载

    深度技术ghost win7系统 64位快速安装版 V2016年2月,深度技术ghost win7 64位快速安装版在不影响大多数软件和硬件运行的前提下,已经尽可能关闭非必要服务,自动安装AMD/In ...

  6. codevs 2919 选择题

    时间限制: 1 s  空间限制: 16000 KB  题目等级 : 黄金 Gold 题目描述 Description 某同学考试,在N*M的答题卡上写了A,B,C,D四种答案. 他做完了,又不能交,一 ...

  7. [Batch檔案筆記] 在UNC路徑中執行Batch檔

    為了讓其他人可以免安裝又可以執行python程式所以我把python portable版本 winpython 放在samba的空間共享但是使用者如果要開 winpython cammand prom ...

  8. (十二)maven之nexus仓库的基本用法

    nexus仓库的基本用法 ① 启动nexus. 上一章有提到:https://www.cnblogs.com/NYfor2018/p/9079068.html ② 访问http://localhost ...

  9. sql mybatis 使用concat乱码

    先贴代码,这是sql查询里面 select id,name,sex,phone,present,adder, CONCAT("从业",experience,"年" ...

  10. Mac app 破解之路

    6年之前一直做过一些内存挂,脚本挂.都是比较低级的技术. 这几年期间,断断续续利用业余时间学了一些汇编的知识,当时只是想着破解游戏. 所有的黑技术都是业余自学的,没有老师可以问,只能百度和自己领悟,比 ...