在本文中,我们将详细介绍RegisterDragDrop返回S_OK,但不调用DragEnter方法的各个方面,并为您提供关于getprocaddress返回0的相关解答,同时,我们也将为您带来关于.
在本文中,我们将详细介绍RegisterDragDrop返回S_OK,但不调用DragEnter方法的各个方面,并为您提供关于getprocaddress返回0的相关解答,同时,我们也将为您带来关于.net – 完成或取消dragdrop时在dragdrop源中触发的事件、android FragmentPagerAdapter 的 “标准” 配置、android FragmentpagerAdapter和FragmentStatePagerAdapter的区别、android – FragmentPagerAdapter instantiateItem使用Fragments?的有用知识。
本文目录一览:- RegisterDragDrop返回S_OK,但不调用DragEnter方法(getprocaddress返回0)
- .net – 完成或取消dragdrop时在dragdrop源中触发的事件
- android FragmentPagerAdapter 的 “标准” 配置
- android FragmentpagerAdapter和FragmentStatePagerAdapter的区别
- android – FragmentPagerAdapter instantiateItem使用Fragments?
RegisterDragDrop返回S_OK,但不调用DragEnter方法(getprocaddress返回0)
我在Windows 7中面临这个问题。首先我定义一个实现IDropTarget的类。 然后我使用RegisterDragDrop和一个控件放在我的应用程序的窗口中。 RegisterDragDrop返回S_OK但是当我从Mozilla FireFox拖放一个链接到控件时,没有对dragenter调用,也没有任何其他的IDropTarget实现对象的函数。 我太累了,不知道该怎么办。 提前致谢
PS:我刚刚发现,当我以pipe理员身份运行我的应用程序时,会发生此问题! 当我正常运行应用程序,一切工作正常! (也许这与更改邮件filter有什么关系?)
用于Linux的Google地球插件替代品
CreateFileMapping以“磁盘空间不足”错误结束
CreateEnvironmentBlock返回块在Windows Vista上的CreateProcessWithlogon太大
Windows API获取netstat -s统计信息
C ++编程获取显示编号?
假设你的代码是正确的,你已经正确地实现了你的一面。 如果您正在Windows Vista或Windows 7上开发,请确保您在与Mozilla相同的特权级别运行应用程序。 如果您在以管理员身份运行的IDE中进行开发,但是以登录用户身份运行Mozilla Firefox,则无法通过拖放操作进行通信。
如果不是这种情况,那么你可以尝试从Windows资源管理器拖动文件,以确保你的代码工作正常。 Mozilla Firefox可能没有正确使用微软的Ole拖放子系统。
总结
以上是小编为你收集整理的RegisterDragDrop返回S_OK,但不调用DragEnter方法全部内容。
如果觉得小编网站内容还不错,欢迎将小编网站推荐给好友。
.net – 完成或取消dragdrop时在dragdrop源中触发的事件
在拖拽源上是否有任何事件可以告诉我拖拽操作是完成还是可能取消?
解决方法
android FragmentPagerAdapter 的 “标准” 配置
private class ImagePagerAdapter extends FragmentPagerAdapter {
public List<ImageItem> fileList;
public ImagePagerAdapter(FragmentManager fm, List<ImageItem> fileList) {
super(fm);
this.fileList = fileList;
}
@Override
public int getCount() {
return fileList == null ? 0 : fileList.size();
}
@Override
public int getItemPosition(Object object) {
return POSITION_NONE;
}
@Override
public boolean isViewFromObject(View view, Object obj) {
return view == ((Fragment) obj).getView();
}
@Override
public void destroyItem(ViewGroup container, int position, Object object) {
Fragment fragment = ((Fragment) object);
container.removeView(fragment.getView());
FragmentUtils.removeFragmentRecently(getSupportFragmentManager(), fragment);
}
@Override
public Fragment getItem(int position) {
String url = fileList.get(position).getActualUrl();
return ImageDetailFragment.newInstance(url);
}
}
android FragmentpagerAdapter和FragmentStatePagerAdapter的区别
1.FragmentPagerAdapterFragmentPagerAdapter 继承自 PagerAdapter。相比通用的 PagerAdapter,该类更专注于每一页均为 Fragment 的情况。如文档所述,该类内的每一个生成的 Fragment 都将保存在内存之中,因此适用于那些相对静态的页,数量也比较少的那种;如果需要处理有很多页,并且数据动态性较大、占用内存较多的情况,应该使用FragmentStatePagerAdapter。FragmentPagerAdapter 重载实现了几个必须的函数,因此来自 PagerAdapter 的函数,我们只需要实现 getCount(),即可。且,由于 FragmentPagerAdapter.instantiateItem() 的实现中,调用了一个新增的虚函数 getItem(),因此,我们还至少需要实现一个 getItem()。因此,总体上来说,相对于继承自 PagerAdapter,更方便一些。
- getItem()
- 该类中新增的一个虚函数。函数的目的为生成新的 Fragment 对象。重载该函数时需要注意这一点。在需要时,该函数将被 instantiateItem() 所调用。
- 如果需要向 Fragment 对象传递相对静态的数据时,我们一般通过 Fragment.setArguments() 来进行,这部分代码应当放到 getItem()。它们只会在新生成 Fragment 对象时执行一遍。
- 如果需要在生成 Fragment 对象后,将数据集里面一些动态的数据传递给该 Fragment,那么,这部分代码不适合放到 getItem() 中。因为当数据集发生变化时,往往对应的 Fragment 已经生成,如果传递数据部分代码放到了 getItem() 中,这部分代码将不会被调用。这也是为什么很多人发现调用 PagerAdapter.notifyDataSetChanged() 后,getItem() 没有被调用的一个原因。
- instantiateItem()
- 函数中判断一下要生成的 Fragment 是否已经生成过了,如果生成过了,就使用旧的,旧的将被 Fragment.attach();如果没有,就调用 getItem() 生成一个新的,新的对象将被 FragmentTransation.add()。
- FragmentPagerAdapter 会将所有生成的 Fragment 对象通过 FragmentManager 保存起来备用,以后需要该 Fragment 时,都会从 FragmentManager 读取,而不会再次调用 getItem() 方法。
- 如果需要在生成 Fragment 对象后,将数据集中的一些数据传递给该 Fragment,这部分代码应该放到这个函数的重载里。在我们继承的子类中,重载该函数,并调用 FragmentPagerAdapter.instantiateItem() 取得该函数返回 Fragment 对象,然后,我们该 Fragment 对象中对应的方法,将数据传递过去,然后返回该对象。
- 否则,如果将这部分传递数据的代码放到 getItem()中,在 PagerAdapter.notifyDataSetChanged() 后,这部分数据设置代码将不会被调用。
- destroyItem()
- 该函数被调用后,会对 Fragment 进行 FragmentTransaction.detach()。这里不是 remove(),只是 detach(),因此 Fragment 还在 FragmentManager 管理中,Fragment 所占用的资源不会被释放。
- 2.FragmentStatePagerAdapter
FragmentStatePagerAdapter 和前面的 FragmentPagerAdapter 一样,是继承子 PagerAdapter。但是,和 FragmentPagerAdapter 不一样的是,正如其类名中的 ''State'' 所表明的含义一样,该 PagerAdapter 的实现将只保留当前页面,当页面离开视线后,就会被消除,释放其资源;而在页面需要显示时,生成新的页面(就像 ListView 的实现一样)。这么实现的好处就是当拥有大量的页面时,不必在内存中占用大量的内存。
- getItem()
- 一个该类中新增的虚函数。
- 函数的目的为生成新的 Fragment 对象。
- Fragment.setArguments() 这种只会在新建 Fragment 时执行一次的参数传递代码,可以放在这里。
- 由于 FragmentStatePagerAdapter.instantiateItem() 在大多数情况下,都将调用 getItem() 来生成新的对象,因此如果在该函数中放置与数据集相关的 setter 代码,基本上都可以在 instantiateItem() 被调用时执行,但这和设计意图不符。毕竟还有部分可能是不会调用 getItem() 的。因此这部分代码应该放到 instantiateItem() 中。
- instantiateItem()
- 除非碰到 FragmentManager 刚好从 SavedState 中恢复了对应的 Fragment 的情况外,该函数将会调用 getItem() 函数,生成新的 Fragment 对象。新的对象将被 FragmentTransaction.add()。
- FragmentStatePagerAdapter 就是通过这种方式,每次都创建一个新的 Fragment,而在不用后就立刻释放其资源,来达到节省内存占用的目的的。
- destroyItem()
- 将 Fragment 移除,即调用 FragmentTransaction.remove(),并释放其资源。
- getItem()
本文同步分享在 博客“xiangzhihong8”(CSDN)。
如有侵权,请联系 support@oschina.cn 删除。
本文参与“OSC源创计划”,欢迎正在阅读的你也加入,一起分享。
android – FragmentPagerAdapter instantiateItem使用Fragments?
@Override public Object instantiateItem(final ViewGroup container,final int position) { final LayoutInflater inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE); int resId = 0; switch (position) { case 0: resId = R.layout.favorites_fragment; break; case 1: resId = R.layout.nearby_list_fragment; break; default: throw new IllegalArgumentException("Index cant be mapped to fragement:" + position); } final View view = inflater.inflate(resId,null); viewPager.addView(view,0); return view; }
因为我想使用片段我已经混淆了我的这个方法作为所有例子我可以找到膨胀视图而不是在那里创建片段.这该怎么做 ?
PS:我正在使用ActionBarSherlock lib 4.1 …
谢谢,
延
解决方法
我们今天的关于RegisterDragDrop返回S_OK,但不调用DragEnter方法和getprocaddress返回0的分享就到这里,谢谢您的阅读,如果想了解更多关于.net – 完成或取消dragdrop时在dragdrop源中触发的事件、android FragmentPagerAdapter 的 “标准” 配置、android FragmentpagerAdapter和FragmentStatePagerAdapter的区别、android – FragmentPagerAdapter instantiateItem使用Fragments?的相关信息,可以在本站进行搜索。
本文标签: