我最近一直在学习合并和包括,我有一个问题,我似乎无法弄清楚答案.假设我有一个布局,定义了我想要添加到多个布局的标题组件.但是,我想更改每个包含用法的每个标题的标题或图标.例如,说我有以下布局:
<RelativeLayout android:layout_width="fill_parent"
android:layout_height="wrap_content"
style="@style/menu_header">
<Button android:id="@+id/backButton"
android:layout_alignParentLeft="true"
android:layout_centerVertical="true"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
style="@style/button"
android:text="@string/back"/>
<TextView style="@style/headerTitle"
android:layout_centerInParent="true"
android:text="${title}"
android:layout_height="wrap_content"
android:layout_width="wrap_content"/>
</RelativeLayout>
Run Code Online (Sandbox Code Playgroud)
然后我可以使用以下内容将其包含在其他布局中:
<LinearLayout ...>
<include android:id="@+id/searchHeader" layout="@layout/shared_header" title="Search"/>
...
</LinearLayout>
Run Code Online (Sandbox Code Playgroud)
我知道我可以修改根元素的任何layout_*属性,但是我可以定义替换到布局中的其他属性,比如说这个例子中的"title",而不必创建我自己的View子类,添加declare-styleable在valaues/resources等中的定义?
拥有这样的东西会使创建可重用的视图变得更加简单,但我似乎无法找到任何证据表明merge + include是否可以做到这一点.
我有一个很多麻烦的问题Spring Data,并MongoDB当它涉及到一个索引的字段.
我已经在文档,但他们不是在解释之间的差别非常好的@Indexed(unique=true)和@Indexed(unique=false).
我有一个我想索引的字段,所以我可以对它执行快速查询.在这种情况下,它的电子邮件地址通常应该是唯一的,但emailAddress可能在一段时间内为空.
但是,一旦将一条记录作为null emailAddress,我就不能拥有任何其他具有null emailAddress的记录.Spring Data拒绝使用null emailAddresses插入任何其他记录.它没有抛出任何不起作用的东西.
现在我把它设置为unique=true,但我正在考虑设置它来unique=false解决这个问题.
这会解决这个问题吗?
还有什么其他问题我可以通过放松这个来添加?
MongoDB是否允许我拥有多个相同且仍能快速查询的电子邮件地址?
我有一个日期,从1943年1月13日上午4:00 UTC.它被Javascript转换为1943年1月12日美国东部时间晚上11点(GMT-500).然而,根据美国的Day Light Savings时间历史,1942年2月9日至1945年9月30日之间的时期是DST.我的服务器通过GMT-400或4:00 AM UTC正确地将日期插入数据库.但是,Javascript似乎假设11月1日到3月8日之间的日期总是GMT-500,无论年份如何.因此,我们会在这些时段之间的某些日期出现舍入错误.任何人都可以确认这是Javascript的时区的问题吗?
我有一个应用程序使用RecyclerView,在平板电脑上我得到一个浅蓝色背景显示.特别是在Jelly Bean设备和模拟器中.我试图通过标记我来删除它,RecyclerView因为android:focusable="false" 我知道它是焦点指示器,因为在模拟器上如果我按Tab键它会消失并突出显示UI上的按钮.它没有出现在我用过的手机上.
那么为什么它会在触摸设备上呈现呢?我怎么摆脱它呢?
我有一个使用ActionBar Sherlock的ActionBar,我需要它来显示溢出,因为我有更多的动作而不是空间.但是,它没有显示溢出图标.这是我的配置:
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android">
<item android:id="@+id/menu_search"
android:icon="@drawable/action_search"
android:title="@string/menu_search"
android:showAsAction="ifRoom|withText"/>
<item android:id="@+id/menu_library"
android:icon="@drawable/hardware_headphones"
android:title="@string/my_music"
android:showAsAction="ifRoom|withText"/>
<item android:id="@+id/menu_downloads"
android:icon="@drawable/av_download"
android:title="@string/downloads"
android:showAsAction="ifRoom|withText"/>
</menu>
Run Code Online (Sandbox Code Playgroud)
以下是设置它的代码:
@Override
public boolean onCreateOptionsMenu(Menu menu) {
MenuInflater menuInflater = getSupportMenuInflater();
menuInflater.inflate(R.menu.shopping_menu, menu);
MenuItem searchMenuItem = menu.findItem(R.id.menu_search);
searchMenuItem.setOnMenuItemClickListener(new MenuItem.OnMenuItemClickListener() {
@Override
public boolean onMenuItemClick(MenuItem item) {
startActivity(new Intent(ShopActivity.this, SearchDialog.class));
return false;
}
});
MenuItem downloadMenuItem = menu.findItem(R.id.menu_downloads);
downloadMenuItem.setOnMenuItemClickListener(new MenuItem.OnMenuItemClickListener() {
@Override
public boolean onMenuItemClick(MenuItem item) {
startActivity( new Intent(ShopActivity.this, DownloadQueueActivity.class) );
return false;
}
});
MenuItem myMusicItem …Run Code Online (Sandbox Code Playgroud) 我有一个正在构建的管理控制台,我想显示Logback为我的应用程序创建的日志.但是,存储这些日志的位置因环境而异.我有几个属性文件,用于定义日志的存储位置:
<configuration>
<property resource='log.properties'/>
<property resource='log.${ENV:-prod}.properties'/>
<appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>${log.dir}/sync.log</file>
...
</configuration>
Run Code Online (Sandbox Code Playgroud)
我想${log.dir}从Logback'sJava API中找到它的价值.我尝试了以下内容,但它没有在资源中定义的任何属性.例如:
LoggerContext loggerContext = (LoggerContext) LoggerFactory.getILoggerFactory();
String logDir = loggerContext.getProperty("log.dir"); // this always returns null
Run Code Online (Sandbox Code Playgroud)
所以我的问题是我应该使用什么API?
我有一个与另一台机器通信的服务.由于它是一个简单的Controller方法,当我的控制器与另一台服务器通信时,Grails会自动从池中获取数据库连接.我想阻止它这样做,并在我准备好时手动打开数据库连接,以便在长时间内不会像打网络电话那样吸收连接.如何防止Grails在控制器方法中自动从池中获取连接?
我不得不问这个问题感觉很荒谬,但我似乎无法将多个 jar 文件添加到 groovyConsole 和 groovysh 的类路径中。如何将多个 jar 文件添加到类路径?这是我尝试过的:
groovyConsole -cp ~/lib/compile/jar/mysql-connector-java-5.1.32.jar:~/lib/compile/jar/ojdbc6-11.2.0.3.jar
但是,当我在控制台中执行此代码时,我得到以下信息:
file:/Users/charlie/lib/compile/jar/mysql-connector-java-5.1.32.jar
file:/Users/charlie/projects/fuseanalytics/./
file:/Users/charlie/.gvm/groovy/current/lib/ant-1.9.3.jar
file:/Users/charlie/.gvm/groovy/current/lib/ant-antlr-1.9.3.jar
file:/Users/charlie/.gvm/groovy/current/lib/ant-junit-1.9.3.jar
file:/Users/charlie/.gvm/groovy/current/lib/ant-launcher-1.9.3.jar
file:/Users/charlie/.gvm/groovy/current/lib/bsf-2.4.0.jar
file:/Users/charlie/.gvm/groovy/current/lib/commons-cli-1.2.jar
file:/Users/charlie/.gvm/groovy/current/lib/commons-logging-1.1.1.jar
file:/Users/charlie/.gvm/groovy/current/lib/gpars-1.2.1.jar
file:/Users/charlie/.gvm/groovy/current/lib/groovy-2.3.6.jar
file:/Users/charlie/.gvm/groovy/current/lib/groovy-ant-2.3.6.jar
file:/Users/charlie/.gvm/groovy/current/lib/groovy-bsf-2.3.6.jar
file:/Users/charlie/.gvm/groovy/current/lib/groovy-console-2.3.6.jar
file:/Users/charlie/.gvm/groovy/current/lib/groovy-docgenerator-2.3.6.jar
file:/Users/charlie/.gvm/groovy/current/lib/groovy-groovydoc-2.3.6.jar
file:/Users/charlie/.gvm/groovy/current/lib/groovy-groovysh-2.3.6.jar
file:/Users/charlie/.gvm/groovy/current/lib/groovy-jmx-2.3.6.jar
file:/Users/charlie/.gvm/groovy/current/lib/groovy-json-2.3.6.jar
file:/Users/charlie/.gvm/groovy/current/lib/groovy-jsr223-2.3.6.jar
file:/Users/charlie/.gvm/groovy/current/lib/groovy-nio-2.3.6.jar
file:/Users/charlie/.gvm/groovy/current/lib/groovy-servlet-2.3.6.jar
file:/Users/charlie/.gvm/groovy/current/lib/groovy-sql-2.3.6.jar
file:/Users/charlie/.gvm/groovy/current/lib/groovy-swing-2.3.6.jar
file:/Users/charlie/.gvm/groovy/current/lib/groovy-templates-2.3.6.jar
file:/Users/charlie/.gvm/groovy/current/lib/groovy-test-2.3.6.jar
file:/Users/charlie/.gvm/groovy/current/lib/groovy-testng-2.3.6.jar
file:/Users/charlie/.gvm/groovy/current/lib/groovy-xml-2.3.6.jar
file:/Users/charlie/.gvm/groovy/current/lib/hamcrest-core-1.3.jar
file:/Users/charlie/.gvm/groovy/current/lib/ivy-2.3.0.jar
file:/Users/charlie/.gvm/groovy/current/lib/jansi-1.11.jar
file:/Users/charlie/.gvm/groovy/current/lib/jcommander-1.35.jar
file:/Users/charlie/.gvm/groovy/current/lib/jline-2.11.jar
file:/Users/charlie/.gvm/groovy/current/lib/jsp-api-2.0.jar
file:/Users/charlie/.gvm/groovy/current/lib/jsr166y-1.7.0.jar
file:/Users/charlie/.gvm/groovy/current/lib/junit-4.11.jar
file:/Users/charlie/.gvm/groovy/current/lib/multiverse-core-0.7.0.jar
file:/Users/charlie/.gvm/groovy/current/lib/qdox-1.12.1.jar
file:/Users/charlie/.gvm/groovy/current/lib/servlet-api-2.4.jar
file:/Users/charlie/.gvm/groovy/current/lib/testng-6.8.8.jar
file:/Users/charlie/.gvm/groovy/current/lib/xmlpull-1.1.3.1.jar
file:/Users/charlie/.gvm/groovy/current/lib/xstream-1.4.7.jar
Run Code Online (Sandbox Code Playgroud)
请注意,第一个 jar 文件 mysql jar 文件已添加到类加载器中,但未添加第二个 jar 文件 oracle jar 文件。我也试过两次使用 -cp 参数,例如:
groovyConsole -cp ~/lib/compile/jar/mysql-connector-java-5.1.32.jar -cp ~/lib/compile/jar/ojdbc6-11.2.0.3.jar
Run Code Online (Sandbox Code Playgroud)
但这只是失败并出现错误。这些文档显然没有任何指导,除了模糊的暗示它像 Java 一样工作。因此,为什么第一次尝试没有开箱即用如此令人沮丧。
我还尝试在使用 Script > Add …
所以我想在不发送重定向的情况下返回HTML页面.原因是使用重定向更改了浏览器中的URL,如果他们没有登录,我无法将某人重定向到登录.有什么最直接的方法呢?看起来它应该很简单而不使用jsp或其他服务器端视图技术.
我有一个测试,我需要使用Grail的IntegrationSpec进行多次调用以测试控制器.
when: "User starts a flow"
controller.userSessionService.user = user
controller.request.method = "POST"
controller.request.contentType = "text/json"
controller.request.content = ([lId: l.id] as JSON).toString().getBytes()
controller.start()
then:
...
when: "User does next step"
controller.userSEssionService.user = user
controller.request.method = "POST"
controller.request.contentType = "text/json"
controller.request.content = ([data1: data] as JSON).toString().getBytes()
controller.nextStep()
then:
...
Run Code Online (Sandbox Code Playgroud)
等等等等.问题是尝试更改第二次调用的请求内容,它将无法正常工作.它似乎只保留对request.content的第一次调用.我知道在以前的版本中GroovyTestCase上有帮助方法,但由于我使用Specs,我没有任何方法可以调用来重置控制器的请求/响应.我试图在每个时间之前重新实例化控制器:使用给定的部分:但测试刚刚崩溃.
我必须按此顺序进行这些调用,并测试每次调用之间的状态变化.我无法通过几个方法调用来解决这些问题.在这种情况下,我不确定这是否重要,但我使用的是MongoDB.
在使用Spock IntegrationSpec时,如何多次调用控制器并在每次调用之间重置请求/响应?
android ×3
java ×3
grails ×2
annotations ×1
attributes ×1
database ×1
datetime ×1
dst ×1
focus ×1
groovy ×1
groovyshell ×1
include ×1
jar ×1
javascript ×1
logback ×1
logging ×1
mongodb ×1
spock ×1
spring-data ×1
spring-mvc ×1
view ×1