
以下错误将在2.3设备上发生,我的设置在4.x设备上运行正常.
我有一个VIEwPager,其中包含一些片段(它们都是同一类).
每个片段都会增加其自己的菜单,因为菜单项可能因片段而异.
为了进行测试,我在Actionbar中设置了一个菜单项(该Actionbar显示在图片的底部,因为它是一个拆分的Actionbar).轻按Item时,应将“片段”中的TextVIEw设置为“单击”.这从一开始就起作用,但是稍微滑动一下,就会发生:
当菜单项被点击时,什么也没有发生.相反,只要我轻扫到下一个片段,下一个片段就会将其TextVIEw设置为“单击”.似乎Actionbar及其菜单与下一个Fragment相关联.
继承人的照片
这是一些代码:
我的活动:
public class MyActivity extends SherlockFragmentActivity implements MyFragment.InvalIDateListener {VIEwPager vIEwPager;SectionsPagerAdapter pagerAdapter;public voID invalIDate() { ActivityCompat.invalIDateOptionsMenu(act);}@OverrIDeprotected voID onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentVIEw(R.layout.empty_vIEwpager); getSupportActionbar().setHomebuttonEnabled(true); getSupportActionbar().setdisplayHomeAsUpEnabled(true); pagerAdapter = new SectionsPagerAdapter(getSupportFragmentManager()); vIEwPager = (VIEwPager) findVIEwByID(R.ID.pager); vIEwPager.setAdapter(pagerAdapter); vIEwPager.setCurrentItem(initialindex);}public class SectionsPagerAdapter extends FragmentPagerAdapter { public SectionsPagerAdapter(FragmentManager fm) { super(fm); } @OverrIDe public Fragment getItem(int position) { Fragment fragment = new MyFragment(); fragment.setHasOptionsMenu(true); return fragment; } // ...}我的片段:
public class MyFragment extends SherlockFragment {HashSet<ImageVIEw> runningImageTasks = new HashSet<ImageVIEw>();@OverrIDepublic voID onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState);}@OverrIDepublic VIEw onCreateVIEw(LayoutInflater inflater, VIEwGroup container, Bundle savedInstanceState) { VIEw v = inflater.inflate(R.layout.fragment_expose, null);}@OverrIDepublic voID onCreateOptionsMenu(Menu menu, MenuInflater inflater) { inflater.inflate(R.menu.menu_grundstueckexpose, menu); // ...}@OverrIDepublic boolean onoptionsItemSelected(MenuItem mitem) { switch (mitem.getItemID()) { case androID.R.ID.home: getActivity().finish(); return true; case R.ID.myitem: textVIEw.setText("clicked"); return true; default: return super.onoptionsItemSelected(mitem); }}}是否有其他人经历过类似的事情,或者对这里可能存在的问题有想法?
解决方法:
问题在于,内部类ActionMenuItemVIEw无法正确处理MotionEvent(实际上,此类中没有任何特定行为).
因此,我没有解决最初的问题,但是找到了解决方法.我只是重写ActionMenuItemVIEw.dispatchtouchEvent()并使用GestureDetector手动处理单击和长按.
您可以在github上检查此解决方案.
总结以上是内存溢出为你收集整理的android-ViewPager和ActionBar(Sherlock)的奇怪错误/行为全部内容,希望文章能够帮你解决android-ViewPager和ActionBar(Sherlock)的奇怪错误/行为所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)