viewpager嵌套多个Fragment并处理点击事件

前记:
本身自己对于fragment了解的就不太多,当自己半路插进项目组开始继续开发的时候,我发现了viewpager+fragment   而且做这个功能的那哥们儿告诉我说就差点击事件没实现了、、 我当时就菊花一紧,你大爷的,你做不出来的烂摊子让我这个不懂fragment的来收拾 让我情何以堪、、你都倒腾了半年了、心里虽然骂了特一顿,但是作为一个程序素养不错的咱,还是接过来了。

开始尝试:
一拿过代码我看的第一眼,我就又开始想骂了,只是画了个UI,连数据接口都没封装,这叫做的差不多了? 哎,原来显示的数据都是直接写在布局里的,服了。看重点,找到viewpager中的fragment,看了几个回调方法,看不大懂,找找文档,了解了下基本意思,开始真正尝试做监听、
直接在fragment中提取控件的同时对其进行了监听,没效果? 不是吧? 然后开始从各个方面找解答,有的人说是要写到viewPagerAdapter里面进行监听,有的人说要换成View,还有的说要、、 总之找了好多办法,通通试过,就是监听不到。
到群里讨论的时候,大家都说怎么可能,我把代码也贴上去了,基本都会所没有错,往往这种时候是最让人伤心欲绝的了,没有错,就是不能点!
怎么办? 各种debug,各种跟踪,就是不走点击,后来我单独写了个测试Demo,可以点击呀!!!
拓展视野:
僵持了一天多,这样不是办法呀、这还能一直耗着不成,先去联调接口去;过程中满脑子都是这个问题,百思不得其解;突然间想到了,程序中有手势滑动事件,会不会是焦点被劫持了! 好,抱着这个念头,回头把所有的尝试的代码全都给注释掉,就用fragment做测试! 我就不信了。把事件传递的回调函数的返回值全都返回TRUE,这样事件不就可以一直传递了吗、 将代码整理了下,果然可以点击了,我内心那个激动啊!!!

好了,探究过程代码如下:
1.单独抽出viewpager+fragment的Demo实现
主activity:

package com.k24.wheel;

import java.util.ArrayList;
import com.k24.wheel.adapter.MyViewPagerAdapter;
import com.k24.wheel.fragment.TestFragments;
import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentActivity;
import android.support.v4.view.ViewPager;

public class TestViewPagerActivity extends FragmentActivity {

	private ViewPager viewPager;
	private ArrayList<Fragment> fragments;
	
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.test_viewpager_ll);
		viewPager = (ViewPager) findViewById(R.id.my_viewpager);
		
		TestFragments fragmentItem;
		fragments = new ArrayList<Fragment>();
		for(int i = 0; i < 5; i++) {
			fragmentItem = new TestFragments(this, i, new String[]{"title"+(i+1), "contents"+(i+1)});
			fragments.add(fragmentItem);
		}
		MyViewPagerAdapter myPagerAdapter = new MyViewPagerAdapter(getSupportFragmentManager(), fragments);
		viewPager.setAdapter(myPagerAdapter);
		viewPager.setCurrentItem(0);
	}
	
}
Adapter:
package com.k24.wheel.adapter;

import java.util.ArrayList;

import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentManager;
import android.support.v4.app.FragmentPagerAdapter;

public class MyViewPagerAdapter extends FragmentPagerAdapter {

	private ArrayList<Fragment> fragments;
	
	public MyViewPagerAdapter(FragmentManager fm, ArrayList<Fragment> fragmen
  • 2
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值