我正在尝试理解和解决我在Eclipse工作区日志中看到的错误,同时处理实现IME的Android应用程序.我是Android和Eclipse的新手.
错误是"com.utterkaos.keyboard.LatinKeyboardView无法实例化".
关联的堆栈跟踪是:
java.lang.UnsupportedOperationException:不支持的服务:位于android.inputmethodservice的android.inputmethodservice.KeyboardView(KeyboardView.java:376)的com.android.layoutlib.bridge.android.BridgeContext.getSystemService(BridgeContext.java:434)中的音频. KeyboardView.(KeyboardView.java:279)at com.utterkaos.keyboard.LatinKeyboardView.(LatinKeyboardView.java:30)at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)at sun.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source)at at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source)at java.lang.reflect.Constructor.newInstance(Unknown Source)at com.android.ide.eclipse.adt.internal.editors.layout.ProjectCallback.instantiateClass(ProjectCallback.java: 402)在android.view.BridgeInflater的android.view.BridgeInflater.loadCustomView(BridgeInflater.java:207)的com.android.ide.eclipse.adt.internal.editors.layout.ProjectCallback.loadView(ProjectCallback.java:166) .createViewFromTag(BridgeI nflater.java:135)在android.view.LayoutInflater.inflate(LayoutInflater.java:466)的android.view.LayoutInflater.inflate(LayoutInflater.java:372)at com.android.layoutlib.bridge.impl.RenderSessionImpl.inflate (RenderSessionImpl.java:321)com.android.layoutlib.bridge.Bridge.createSession(Bridge.java:324)位于com的com.android.ide.common.rendering.LayoutLibrary.createSession(LayoutLibrary.java:325). android.ide.eclipse.adt.internal.editors.layout.gle2.RenderService.createRenderSession(RenderService.java:372)at com.android.ide.eclipse.adt.internal.editors.layout.gle2.GraphicalEditorPart.renderWithBridge(GraphicalEditorPart .java:1361)位于com.android.ide.eclipse.adt.internal.editors.layout的com.android.ide.eclipse.adt.internal.editors.layout.gle2.GraphicalEditorPart.recomputeLayout(GraphicalEditorPart.java:1115) .gle2.GraphicalEditorPart.activated(GraphicalEditorPart.java:941)位于com.android.ide.eclipse.adt.internal.editors.layout.LayoutEditorDelegate.delegatePageChange(LayoutEditorDeleg)ate.java:450)位于org.eclipse.ui.part.MultiPageEditorPart.setActivePage(MultiPageEditorPart.java)的com.android.ide.eclipse.adt.internal.editors.common.CommonXmlEditor.pageChange(CommonXmlEditor.java:358) 1067)在com的com.android.ide.eclipse.adt.internal.editors.AndroidXmlEditor.selectDefaultPage(AndroidXmlEditor.java:380)的org.eclipse.ui.forms.editor.FormEditor.setActivePage(FormEditor.java:607) .android.ide.eclipse.adt.internal.editors.AndroidXmlEditor.addPages(AndroidXmlEditor.java:285)位于com.android.ide.eclipse.adt.internal.editors.common.CommonXmlEditor.addPages(CommonXmlEditor.java:283)在org.eclipse.ui.ui.Editor.AdditorReference上的org.eclipse.ui.forms.editor.FormEditor.createPages(FormEditor.java:138)org.eclipse.ui.part.MultiPageEditorPart.createPartControl(MultiPageEditorPart.java:348) .createPartHelper(EditorReference.java:670)位于org.eclipse.ui.internal.WorkbenchPartReference.getPart(Workbe)的org.eclipse.ui.internal.EditorReference.createPart(EditorReference.java:465)nchPartReference.java:595)org.eclipse.ui.Uternal中的org.eclipse.ui.internal.Editor.Reference.getEditor(EditorReference.java:289)org.eclipse.工作台上的org.eclipse.ui.internal.WorkbenchPage.busyOpenEditorBatched(WorkbenchPage.java:2945)位于org.eclipse.ui.internal.WorkbenchPage $ 10.run(WorkbenchPage.java :org.eclipse.Swt.custom.BusyIndicator.showWhile(BusyIndicator.java:70)org.eclipse.ui.Uternal中的org.eclipse.ui.internal.WorkbenchPage.openEditor(WorkbenchPage.java:2789)org.eclipse.ui.internal. org.eclipse.ui.internal.WorkbenchPage.openEditor(WorkbenchPage.java:2764)上的org.eclipse.ui.ide.IDE.openEditor(IDE.java:651)中的WorkbenchPage.openEditor(WorkbenchPage.java:2773)位于org.eclipse.jdt.internal.ui的org.eclipse.jdt.internal.ui.javaeditor.EditorUtility.openInEditor(EditorUtility.java:355)的.eclipse.ui.ide.IDE.openEditor(IDE.java:610) .javaeditor.EditorUtility.openInEditor(EditorUt ility.java:164)org.eclipse.jdt.ui.actions.OpenAction.run(OpenAction.java:249)org.eclipse.jdt.ui.actions.OpenAction.run(OpenAction.java:228)org位于org.eclipse.jdt.internal.ui的org.eclipse.jdt.ui.actions.SelectionDispatchAction.run(SelectionDispatchAction.java:251)的.eclipse.jdt.ui.actions.SelectionDispatchAction.dispatchRun(SelectionDispatchAction.java:275) .packageview.PackageExplorerActionGroup.handleOpen(PackageExplorerActionGroup.java:376)atg.eclipse.jdt.internal.ui.packageview.PackageExplorerPart $ 4.open(PackageExplorerPart.java:538)org.eclipse.ui.OpenAndLinkWithEditorHelper $ InternalListener.open( OpenAndLinkWithEditorHelper.java:48)在org.eclipse的org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:42)的org.eclipse.jface.viewers.StructuredViewer $ 2.run(StructuredViewer.java:866). ui.internal.JFaceUtil $ 1.run(JFaceUtil.java:49)org.eclipse.jface.util.SafeRunnable.run(SafeRunnable.java:175)org.eclipse.jface.viewers.StructuredViewer.fireOpen(StructuredVi)ewer.java:864)在org.eclipse上的org.eclipse.jer上的org.eclipse.jer.j上的org.eclipse.tructersView.handleOpen(StructuredViewer.java:1152)org.eclipse. jface.util.OpenStrategy.fireOpenEvent(OpenStrategy.java:275)atg.eclipse.jface.util.OpenStrategy.access $ 2(OpenStrategy.java:269)org.eclipse.jface.util.OpenStrategy $ 1.handleEvent(OpenStrategy. java:309)org.eclipse.swt.wtt.EndTable.sendEvent(EventTable.java:84)atg.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1053)org.eclipse.swt.widgets .Display.runDeferredEvents(Display.java:4165)位于org.eclipse.wt.ui.Worky.RunEventLoop(Workbench.java:2701)的org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3754) org.eclipse.ui.internal.Workbench.runUI(Workbench.java:2665)org.eclipse.ui.internal.Workbench.access $ 4(Workbench.java:2499)org.eclipse.ui.internal.Workbench $ 7.在org.eclipse.core.databinding.observable.Realm.runW上运行(Workbench.java:679)ithDefault(Realm.java:332)位于org.eclipse.ui的org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.java:149)的org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.java:668) .internal.ide.application.IDEApplication.start(IDEApplication.java:123)位于org.eclipse.core.runtime.internal.adaptor的org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:196) .EclipseAppLauncher.runApplication(EclipseAppLauncher.java:110)位于org.eclipse.core.runtime.adaptor.EclipseStarter.run上的org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:79)(EclipseStarter) .java:344)atg.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:179)at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)在org.eclipse.equinox.launcher.Main.in的java.lang.reflect.Method.invoke(未知来源)的sun.reflect.DelegatingMethodAccessorImpl.invoke(未知来源)在org.eclipse上的org.eclipse.equinox.launcher.Main.run(Main.java:1410)的org.eclipse.equinox.launcher.Main.basicRun(Main.java:577)上的vokeFramework(Main.java:622) .equinox.launcher.Main.main(Main.java:1386)
LatinKeyboardView.java的相关部分是:
public class LatinKeyboardView extends KeyboardView {
static final int KEYCODE_OPTIONS = -100;
public LatinKeyboardView(Context …Run Code Online (Sandbox Code Playgroud) 我正在处理一些持续数天的 Rust 代码,但Duration::days(n)根据文档n * 24 * 60 * 60秒数,它的实现不是 n 天,因为并非所有天都是24 * 60 * 60秒。
这种行为有据可查:
pub fn days(days: i64) -> Duration
Duration用给定的天数制作一个新的。等同于Duration::seconds(days * 24 * 60 * 60)溢出检查。当持续时间超出范围时出现恐慌。
Rust Chrono 有没有办法获得严格来说是 1 天而不是几秒的持续时间并且与DateTime类型兼容?并非所有的日子都是相同的秒数。seconds并且days是完全不同的单位。如果有这样的函数,那么下面的结果总是会在第二天的同一时间给出?
let start = Local.now();
let one_day_later = start + function_that_returns_a_duration_of_days(1);
Run Code Online (Sandbox Code Playgroud)
同样,Duration:days(1)不是这样的函数,因为它返回1 * 24 * 60 * 60seconds 而不是1 day。
例如,将TZ设置为America/Denver如下:
let …Run Code Online (Sandbox Code Playgroud) 我正在尝试使用 ECMA-402 国际 API 来获取不是本地时区的时区中的时区缩写(服务器时区是 UTC)。我知道其他方法来获得这个。我试图了解国际 API 的局限性并充分利用它。我可以获得完整的时区名称并自己映射它,但是由于缩写在 IANA tz 数据库中,并且国际 API 应该基于此,它似乎应该能够生成它们,这让我觉得我是做错事。
我有以下代码:
const fmt = new Intl.DateTimeFormat('en', {
year: 'numeric',
month: '2-digit',
day: '2-digit',
hour: '2-digit',
minute: '2-digit',
second: 'numeric',
fractionalSecondDigits: 3,
hour12: false,
weekday: 'short',
timeZoneName: 'short',
timeZone: 'Pacific/Auckland'
});
const now = new Date();
console.log(fmt.format(now));
const fmt2 = new Intl.DateTimeFormat('en', {
year: 'numeric',
month: '2-digit',
day: '2-digit',
hour: '2-digit',
minute: '2-digit',
second: 'numeric',
fractionalSecondDigits: 3,
hour12: false,
weekday: 'short',
timeZoneName: 'short',
timeZone: 'America/Los_Angeles'
});
console.log(fmt2.format(now));
Run Code Online (Sandbox Code Playgroud)
在节点 …