我正在使用Spring将目录的路径注入到我的单元测试中.在这个目录里有一些应该用来生成使用参数化测试用例的测试数据文件的参数测试运行.不幸的是,测试运行器要求提供参数的方法是静态的.这对我的情况不起作用,因为目录只能注入非静态字段.我有什么想法可以解决这个问题吗?
我有一个ListFragment由一个ArrayAdapter人填充的支持Loader.当用户点击其中一个项目时,我想将对所选项目的引用以及列表项目的其余部分传递给另一个片段.我的问题是如何从适配器获取所有项目?以下是我看到的可能性:
1.保留对背景的参考 List
像这样创建适配器:
List<DomainObject> items = new ArrayList<DomainObject>();
listAdapter = new ArrayAdapter<DomainObject>(getActivity(), R.layout.mine, items);
Run Code Online (Sandbox Code Playgroud)
然后简单地将其items或副本传递给下一个活动.
我看到的缺点是我依赖于未记录的事实,即我传递给构造函数的相同列表稍后包含这些项目.
2.通过适配器迭代
单击某个项目时,遍历适配器并构建列表.这似乎是一项不必要的工作量.这些项目包含在List适配器的a 中,我手动将每个项目复制到一个新列表.
3.添加到适配器时,保留单独的项目列表
在将项添加到适配器之前,将其添加到我在片段中维护的单独列表中.这也是浪费,因为项目列表被复制在ArrayAdapter片段中.
在我的应用程序中,我允许用户在嵌入式UIWebView中打开外部页面.我是否可以设置与该请求一起发送的referer标头?当用户打开这些外部页面时,我希望我的应用程序获得"信誉".
我正在构建一个gradle插件,为每个应用程序变体添加一个新任务.此新任务需要应用程序变体的包名称.
这是我目前的代码,它停止使用最新版本的android gradle插件:
private String getPackageName(ApplicationVariant variant) {
// TODO: There's probably a better way to get the package name of the variant being tested.
String packageName = variant.generateBuildConfig.packageName
if (variant.processManifest.packageNameOverride != null) {
packageName = variant.processManifest.packageNameOverride
}
packageName
}
Run Code Online (Sandbox Code Playgroud)
由于构建配置处理的更改,这已停止在最新版本的android插件中工作.无论如何它似乎是一个黑客,所以我不会感到惊讶它停止工作.是否有规范的方法来获取包名称?
拥有一个只包含一个类的包是不是一种坏习惯?将单个类移动到util包含其他随机有用类的包是否更有意义?
我正在做一个常见的设计模式吗?如果是这样,那叫什么名字?
我有一个复杂的对象,其中包含字符串和字符串列表等"简单"字段以及其他复杂对象.我想将此对象的实例添加到JMS消息队列,这意味着它们必须是Serializable.我不想制作整个对象图Serializable,所以我选择制作"Descriptor"对象,其中包含构建复杂对象的必要信息和可以创建对象的"Builder"对象.现在,我序列化"Descriptor"对象并将其添加到队列中.当对象出列时,它使用"Builder"构建到一个完整的对象中.
需要注意的重要一点是,对象是在其他系统上运行的作业.消息队列是一种方式,序列化仅发生在作业生命周期的开始.
每次我将片段附加到我的活动时,我都想注册它以接收活动中的事件.这很容易,因为我可以覆盖FragmentActivity#onAttachFragment(Fragment).从活动中删除片段后,我想从接收事件中取消注册.我希望有一个onDetachFragment我可以以类似方式使用的事件,但我找不到它.
还有另一种方法可以完成我想要做的事情吗?我想在活动中保持注册/取消注册,而不是将其移动到基本片段类(我可以使用onAttach/ onDetach).