我的对象-从Log.d("FormattedDate",Object.getDOB())返回我;
if (!Object.getDOB().matches("[^-]*")) {
txtDOB.setText(Object.getDOB());
} else {
txtDOB.setText("-");
}
Run Code Online (Sandbox Code Playgroud)
我正在检查我的Object.getDOB()是否匹配-,然后显示emptry字符串,但此regExp不起作用.
我有这种String格式的一堆日期:
String date = "Wed Sep 15 16:31:05 BST 2010";
Run Code Online (Sandbox Code Playgroud)
我想将它转换回日期或日历对象.在我开始重新发明轮子之前,有没有简单的方法可以做到这一点,最好是在JDK中出现?
在我的代码库中是(非常简化)以下:
public static void main (String[] args) {
System.out.println("Starting application");
try {
System.out.println("About to validate");
validate(args);
catch (Exception e) {
e.printStackTrace();
}
}
public static void validate(String[] args) {
System.out.println("Your first arg is " + args[0]);
if (someProblemWith(args)) {
System.out.println("Your args are wrong. It should be: ...");
throw new BadArgsException(e);
}
}
Run Code Online (Sandbox Code Playgroud)
哪个工作正常.请注意,上面的示例代码是设计的,只是为了在异常和堆栈跟踪打印之前显示多个日志语句.这通常意味着我的上一个日志记录语句在堆栈跟踪输出的中间丢失.是否有一种优雅的方式要求e.printStackTrace()语句等待System.out完成其工作?我基本上在寻找堆栈跟踪是发生错误时打印的最后一件事.以下是我的程序的示例输出:
java.lang.Throwable
....
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
Your args are wrong. It should be: ...
at java.lang.reflect.Method.invoke(Method.java:597)
at org.eclipse.jdt.internal.jarinjarloader.JarRsrcLoader.main(JarRsrcLoader.java:56)
Run Code Online (Sandbox Code Playgroud) 我正在QA中编写一堆代码并找到了几个实例,其中开发人员有一个实现Comparable的DTO.这个DTO里面有7个或8个字段.compareTo方法仅在一个字段上实现:
private DateMidnight field1; //from Joda date/time library
public int compareTo(SomeObject o) {
if (o == null) {
return -1;
}
return field1.compareTo(o.getField1());
}
Run Code Online (Sandbox Code Playgroud)
类似地,equals方法被覆盖,基本归结为:
return field1.equals(o.getField1());
Run Code Online (Sandbox Code Playgroud)
最后哈希码方法的实现是:
return field1.hashCode;
Run Code Online (Sandbox Code Playgroud)
field1永远不应该为null,并且在这些对象中是唯一的(即我们不应该得到两个具有相同对象的对象field1).
因此,实现是一致的,这是好的,但我应该担心只使用一个字段?这不寻常吗?是否可能导致问题或混淆其他开发人员?我正在考虑这样的场景,其中传递了这些对象的列表,而另一个开发人员使用Map或Set of somesort并从这些对象获得异常行为.任何想法都赞赏.谢谢!
我正在使用java.util.concurrency框架实现一些代码.我将把一组callables传递给一个将并行执行它们的类.我正试图找出以类型安全的方式获取每个响应的最佳方法.这里有一些代码可以帮助解释我在做什么:
首先我创建我的Callables,这是要并行调用的工作单元.例如,这里第一个工作单元返回a String,第二个工作单元返回Integer:
Callable<String> firstCallable = new Callable<String>(){
public String call() {...}
};
Callable<Integer> secondCallable = new Callable<Integer>(){
public Integer call() {...}
};
Run Code Online (Sandbox Code Playgroud)
现在我将它们激活到我的框架中以并行运行它们,并且诀窍是获得适当的响应对象的句柄.这是一个有效的实现:
Map<Callable,Object> responseMap = ParallelSender.send(firstCallable,
secondCallable);
Run Code Online (Sandbox Code Playgroud)
Object特定的响应在哪里Callable.因此,你可以这样做:
String firstCallableResponse = (String)responseMap.get(firstCallable);
Integer secondCallableResponse = (Integer)responseMap.get(secondCallable);
Run Code Online (Sandbox Code Playgroud)
所以我的问题是,从地图中获取时是否可以避免投射?这不会编译,但我正在考虑这些方面:
Map<Callable<T>, T> responseMap = ParallelSender.send(...);
String firstCallableResponse = responseMap.get(firstCallable);
Run Code Online (Sandbox Code Playgroud)
这样返回的值基于Callable键的类型参数.我担心的是,如果有人refactors工作单位的返回类型(从说Integer来BigDecimal,然后自投或其他)Object永远不会被自动重构工具被捕获,并可能导致运行时问题.
结论:感谢下面的所有有用的评论和讨论,我采取了一个略有不同的机智(尽管肖恩帕特里克弗洛伊德认为上面的问题是正确的).我最终完全删除了响应映射并Callable用响应填充了对象.以下是相关的代码段:
public abstract class AbstractParallelCallable<V> implements Callable<V> {
/** The response generated by …Run Code Online (Sandbox Code Playgroud) 给定两个具有不同数据A和B的相同小部件,当小部件A的数据显示在小部件启动的活动中时,按下后退按钮然后按下小部件B它一切正常.然而,当显示小部件A的数据时,按下主页按钮然后按下小部件B,仍然显示小部件A的数据.从Android - 当从具有不同附加功能的小部件启动相同的活动时,如何防止从HOME按钮返回后显示相同的实例?它表明我的问题是PendingIntents(对于小部件A和B)两者都是相同的,并且仅在附加内容上有所不同,因此被缓存.即附加功能是widget ID,它是我需要检索widget-press动作的所有数据的关键.一个建议是使用不同的数据,但我似乎无法让这个工作.这是代码:
Intent intent = new Intent(context, WidgetActivity.class);
intent.putExtra(AppWidgetManager.EXTRA_APPWIDGET_ID, appWidgetId);
intent.setData(Uri.withAppendedPath(Uri.parse("droidln://widget/id/"),
String.valueOf(appWidgetId)));
PendingIntent pendingIntent =
PendingIntent.getActivity(context, appWidgetId, intent, 0);
Run Code Online (Sandbox Code Playgroud)
添加setData到意图产生没有区别.关于如何解决缓存挂起意图问题的任何想法?我也尝试过:
intent.addFlags(Intent.FLAG_ACTIVITY_EXCLUDE_FROM_RECENTS);
Run Code Online (Sandbox Code Playgroud)
和
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
Run Code Online (Sandbox Code Playgroud)
和
intent.setAction("actionstring" + System.currentTimeMillis());
Run Code Online (Sandbox Code Playgroud)
一切都没有效果.
经过几个小时的配置和搜索代码后,我已经减少了几百个错误,并留下了这两个错误:
"该项目未构建,因为其构建路径不完整.无法找到com.google.android.maps.MapActivity的类文件.修复构建路径然后尝试构建此项目"
"无法解析com.google.android.maps.MapActivity类型.它是从所需的.class文件间接引用的"
我到处寻找任何关于如何解决这个问题的提示.我的构建路径似乎很好.我包括了可能适用的所有JAR.我很确定我正在使用正确的ADT,所以任何帮助对于需要改变的东西都会很棒.
我在市场上有一个支持小部件的应用程序.我对应用程序进行了一些重大更改,重新修改了许多内部,替换/重命名活动等.其他更改包括从不同的共享首选项键获取窗口小部件配置数据,尽管我已编写转换代码来处理迁移.该应用程序按照我的意愿工作,包括小部件,从新鲜安装.但是,我现在正在测试从旧版本的应用程序升级到新版本(通过模拟器).我看到一些奇怪的行为.有一次,小部件在初始启动时显示正常,但是当点击时尝试启动旧活动而不是我编程的新活动.所以第一个问题是,为什么小部件没有更新到app安装上的新代码?
我测试升级的其余尝试导致现有小部件在新版本安装时完全消失.可能是什么导致了这个?log-cat日志中没有任何注释.有什么建议?
我正在生成我的第一个JAXB数据绑定.我有一个架构,其中包含一个xs:simpleType:
<xs:simpleType name="NINumberType">
<xs:restriction base="xs:string">
<xs:pattern value="[A-Z]{2}\d{6}[A-D]{0,1}"/>
</xs:restriction>
</xs:simpleType>
Run Code Online (Sandbox Code Playgroud)
在我的binding.xjb中我有这个:
<jxb:bindings version="1.0"
xmlns:jxb="http://java.sun.com/xml/ns/jaxb"
xmlns:xs="http://www.w3.org/2001/XMLSchema"
xmlns:xjc="http://java.sun.com/xml/ns/jaxb/xjc"
jxb:extensionBindingPrefixes="xjc">
<jxb:bindings schemaLocation="mySchema.xsd" node="/xs:schema">
<jxb:globalBindings mapSimpleTypeDef="true" />
<jxb:schemaBindings>
<jxb:package name="com.company.jaxb.mySchema"/>
</jxb:schemaBindings>
</jxb:bindings>
</jxb:bindings>
Run Code Online (Sandbox Code Playgroud)
然后,通过Eclipse(RAD 7.5),我右键单击模式,然后选择Generate-> Java.这会产生预期的数据绑定对象,除了NINumberType没有内置限制:
/**
* <p>Java class for NINumberType simple type.
*
* <p>The following schema fragment specifies the expected content contained within this class.
*
* <pre>
* <simpleType name="NINumberType">
* <restriction base="{http://www.w3.org/2001/XMLSchema}string">
* <pattern value="[A-Z]{2}\d{6}[A-Z]{0,1}"/>
* </restriction>
* </simpleType>
* </pre>
*/
@XmlAccessorType(XmlAccessType.FIELD)
@XmlType(name = "NINumberType", propOrder = …Run Code Online (Sandbox Code Playgroud) 我试图将我的ConstraintLayout添加到NestedScrollView.在观看我的ContraintLayout时,一切看起来都很好.
但是然后将布局包含到我的NestedScrollView中会折叠ContraintLayout.(即使我在include和我的CL中使用匹配父宽度/ heigt)
这实际上是之前版本的ContraintLayout(~pre Beta)中的一个错误.Google Bug报告
我正在使用Verion beta4的这种方法.链接到Youtube AndroidDev频道
constraint_layout.xml:
<android.support.design.widget.CoordinatorLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/coordinator_layout"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:fitsSystemWindows="true"
tools:context="de.project.andy.aliver.JobCreatorActivity">
<include layout="@layout/content_job_creator" />
<android.support.design.widget.AppBarLayout
android:id="@+id/app_bar"
android:layout_width="match_parent"
android:layout_height="145dp"
android:fitsSystemWindows="true"
android:theme="@style/AppTheme.AppBarOverlay">
<android.support.design.widget.CollapsingToolbarLayout
android:id="@+id/toolbar_layout"
android:layout_width="match_parent"
android:layout_height="143dp"
android:fitsSystemWindows="true"
app:contentScrim="?attr/colorPrimary"
app:layout_scrollFlags="scroll|exitUntilCollapsed">
<android.support.v7.widget.Toolbar
android:id="@+id/toolbar"
android:layout_width="match_parent"
android:layout_height="?attr/actionBarSize"
app:layout_collapseMode="pin"
app:popupTheme="@style/AppTheme.PopupOverlay" />
</android.support.design.widget.CollapsingToolbarLayout>
</android.support.design.widget.AppBarLayout>
<android.support.design.widget.FloatingActionButton
android:id="@+id/jc_fab"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@android:drawable/arrow_up_float"
android:layout_gravity="end|bottom"
app:fabSize="normal"
android:layout_margin="15dp" />
</android.support.design.widget.CoordinatorLayout>
Run Code Online (Sandbox Code Playgroud)
nested_scrollview_layout.xml:
<android.support.v4.widget.NestedScrollView xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
app:layout_behavior="@string/appbar_scrolling_view_behavior"
tools:context="de.project.andy.aliver.JobCreatorActivity"
tools:showIn="@layout/activity_job_creator">
<include layout="@layout/constraint_layout"
android:layout_width="match_parent"
android:layout_height="match_parent" />
</android.support.v4.widget.NestedScrollView>
Run Code Online (Sandbox Code Playgroud)
有解决方法吗?