Articles of java

Android中的Date应该使用什么类?

我目前正在为Android做一个应用程序,但我不确定哪个类最好用。 我需要处理的date是诸如比较date,获得date之间的差异以及date计算(比如添加/减less诸如两周或一个月的一小段时间任何给定的date)。 我知道在Java API中的标准Date类是可怕的,所以我只是想知道哪些类被推荐? 我见过GregorianCalendar类和Joda时间库。 不过,由于Joda时间库的大小,我读了一篇文章,不推荐用于应用程序。 任何帮助将非常感激。 ^^ 编辑:从404notfound评论,我决定去日历界面。 这是由于日历界面自动使用基于用户设备的区域设置和时区的最佳实现。 这可以使它在实现GregorianCalendar(或其他特定的实现)方面更灵活,就地点而言, 希望这对于有同样难题的任何人都有帮助! 编辑#2:进一步查看NguyễnHoàiNam提供的链接之后,我已经使用了ThreeTenABP库,因为它是Java 8中新的Time类的封装,并且将被certificate比使用更stream畅日历方法。

何时调用response.body()。close()

我有一个使用OkHttp的Android SDK。 在我的示例应用程序使用我的SDK一切工作正常。 然而,我的一个用户,当StrictMode打开时,得到以下的java.lang.Throwable: Explicit termination method 'close' not called 。 我已经尝试在我自己的应用程序与StrictMode复制这个,不要得到这个错误。 我明白,我应该调用response.body().close()但我仍然有点困惑,为什么这不是在我的应用程序中发生。 他发给我的堆栈跟踪只有我的类,所以它似乎没有任何东西在他的代码造成的。 另外值得注意的是,只有一个请求我的SDK实际上有响应读取。 但是这不是我的用户所说的引起exception的请求。 还有什么可能导致这个? 什么时候应该调用.close() ? 调用execute()后立即调用它是可取的吗? closures身体会阻止它在未来被阅读吗?

material-calendarview设置date的背景颜色

我的目标是find一个Android库,这将允许我在日历视图上标记基于数组的各种date。 date可能是连续的,也可能不是连续的。 我的理想场景是更改每个date的背景颜色。 重要的复杂性是,我不知道这种颜色,直到运行时,因为它将来自服务器查询。 我一直在研究这一整天,我最好的希望似乎是material-calendarview ( github )。 但是,我发现他们的代码有点难以理解,这是对我的,但我完全卡住了。 我在我的XML布局中添加了这样的日历: <com.prolificinteractive.materialcalendarview.MaterialCalendarView android:id="@+id/calendar_view" android:layout_width="match_parent" android:layout_height="match_parent" android:layout_marginLeft="20dp" android:layout_marginRight="20dp" xmlns:app="http://schemas.android.com/apk/res-auto" app:mcv_showOtherDates="all" app:mcv_selectionColor="#00F"/> 然后在我的活动中,我有这些实例variables: private MaterialCalendarView calendarView; private ArrayList<Date> markedDates; 和这个代码在我的onCreateView() calendarView = (MaterialCalendarView) view.findViewById(R.id.calendar_view); 好吧,很简单。 但我不知道如何从date数组中标记日历。 我正在研究这个方法,但是我只是不知道如何超越我在这里的范围: private void initializeCalendar() { calendarView.setOnDateChangedListener(context); calendarView.setShowOtherDates(MaterialCalendarView.SHOW_ALL); Calendar calendar = Calendar.getInstance(); calendarView.setSelectedDate(calendar.getTime()); calendar.set(calendar.get(Calendar.YEAR), Calendar.JANUARY, 1); calendarView.setMinimumDate(calendar.getTime()); calendar.set(calendar.get(Calendar.YEAR), Calendar.DECEMBER, 31); calendarView.setMaximumDate(calendar.getTime()); int bgColor […]

与Mockito的Android仪器testing

我试图使用Android仪器testingMockito框架,但我不能正确初始化它。 我有以下testing类: class MainKontorTest extends ActivityInstrumentationTestCase2<MainActivity> { @Mock Dependency bar; @Override public void setUp() { super.setUp(); MockitoAnnotations.initMocks(this); } public void testSomething() { Foo foo = new Foo(bar); } } 当我尝试运行这个testing时,我得到以下错误和stacktrace: java.lang.ExceptionInInitializerError org.mockito.internal.creation.cglib.ClassImposterizer.createProxyClass(ClassImposterizer.java:95)at org.mockito.internal.creation.cglib.ClassImposterizer.imposterise(ClassImposterizer.java:57)at org。 mockito.internal.creation.cglib.ClassImposterizer.imposterise(ClassImposterizer.java:49)at org.mockito.internal.creation.cglib.CglibMockMaker.createMock(CglibMockMaker.java:24)at org.mockito.internal.util.MockUtil。在org.mockito.internal.MockAnnotationProcessor的org.mockito.Mockito.Mock(Mockito.java:1285)上的org.mockito.internal.MockitoCore.mock(MockitoCore.java:59)上的createMock(MockUtil.java:33) (org.mockito.internal.configuration.DefaultAnnotationEngine.createMockFor(DefaultAnnotationEngine.java:43)org.mockito.internal.configuration.MockAnnotationProcessor.process(MockAnnotationProcessor.java:16)处理(MockAnnotationProcessor.java:33)。 mockito.internal.configuration.DefaultAnnotationEngine.process(DefaultAnnotationEn (org.mockito.java:66)org.mockito.internal.configuration.InjectingAnnotationEngine.processIndependentAnnotations(InjectingAnnotationEngine.java:71)org.mockito.internal.configuration.InjectingAnnotationEngine.process(InjectingAnnotationEngine.java:55)at org.mockito.MockitoAnnotations .initMocks(MockitoAnnotations.java:108)at junit.framework.TestCase.runBare(TestCase.java:132)at junit.framework。org.arkadiy.moduledeleationsample.ui.main.MainKontorTest.setUp(MainKontorTest.java:20)。 TestResult $ 1.protect(TestResult.java:115)at android.support.test.internal.runner.junit3.AndroidTestResult.runProtected(AndroidTestResult.java:77)at junit.framework.TestResult.run(TestResult.java:118)at android.support.test.internal.runner.junit3.AndroidTestResult.run(AndroidTestResult.java:55),位于android.support.test.internal.runner.junit3的junit.framework.TestCase.run(TestCase.java:124)。 NonLeakyTestSuite $ NonLeakyTest.run(NonLeakyTestSuite.java:63)在junit.framework.TestSuite.runTest(TestSuite.java:24 3)在android.support.test.internal.runner的android.support.test.internal.runner.junit3.DelegatingTestSuite.run(DelegatingTestSuite.java:103)上的junit.framework.TestSuite.run(TestSuite.java:238) .org.junit.runners.Suite.runChild(Suite.java)中的。 […]

如何知道BLE设备何时在Android上订阅特性?

从iOS开发背景来看,当使用蓝牙LE充当外设时,当“中央”BLE设备为特性订阅(启用通知)时,您可以注册callback。 我正在努力看到如何在Android上实现。 如果您正在使用蓝牙LE作为中心,我可以看到您将如何订阅: bluetoothGatt.setCharacteristicNotification(characteristicToSubscribeTo, true); 这与iOS上的相同: peripheralDevice.setNotifyValue(true, forCharacteristic characteristicToSubscribeTo) 现在,在iOS上调用上述内容之后,在外围设备上,您将获得一个callback,说中央已经订购了一个类似于: peripheralManager(manager, central subscribedCentral didSubscribeToCharacteristic characteristic) ,然后为您提供订阅设备的参考/启用通知和什么特征。 Android上的等效物是什么? 为了清楚起见,我将指出,我不需要订阅Android上的特性,设备充当外设,并且在其他设备订阅特性时需要得到通知。 对不起,如果这是显而易见的,但我不能在文档或其他地方find它。

在底部工作表中更新recyclerview内容失败

我想通过点击事件来改变底部视图中的列表内容,但是我只有空白表单。 这里是一个从BottomSheetSample(github.com/niravkalola/BottomSheetSample)修改的演示。 mainActivity.java package com.nkdroid.bottomsheetsample; import android.content.DialogInterface; import android.os.Bundle; import android.support.annotation.NonNull; import android.support.design.widget.BottomSheetBehavior; import android.support.design.widget.BottomSheetDialog; import android.support.v7.app.AppCompatActivity; import android.support.v7.widget.LinearLayoutManager; import android.support.v7.widget.RecyclerView; import android.view.View; import android.widget.Button; import java.util.ArrayList; import java.util.List; import java.util.Random; public class MainActivity extends AppCompatActivity implements ItemAdapter.ItemListener { private Button btnView, btnDialog; BottomSheetBehavior behavior; private BottomSheetDialog mBottomSheetDialog; private ItemAdapter mAdapter; RecyclerView recyclerView; @Override protected […]

Android项目build立成功,但运行失败,错误:java.util.zip.ZipException:重复条目

我已经更新了我的android工作室和SDK和项目的一些程序包依赖关系,从那以后我面临了很多问题,我认为原因是依赖关系不兼容。 在我研究的过程中,我发现很多人都有同样的问题,这并不罕见。 我已经解决了一些错误,但问题却一个接一个出现,我只是困惑。 希望你能帮我找出问题和解决办法。 代码适用于新的Android版本! (有点奇怪),我可以在android 21+上编译和运行应用程序。 但是当我尝试运行它在21以下的Android版本,它给了我一个错误。 在我迁移到Android Studio 2之前,每件事情都可以。 这里是我现在得到的错误代码: FAILURE: Build failed with an exception. 出了什么问题:执行失败的任务':transformClassesWithJarMergingForDebug'。 com.android.build.api.transform.TransformException:java.util.zip.ZipException:重复条目:android / support / annotation / WorkerThread.class 尝试:运行–stacktrace选项来获取堆栈跟踪。 运行–info或–debug选项来获得更多的日志输出。 这里是项目档案文件: task wrapper(type: Wrapper) { gradleVersion = '2.2' } buildscript { repositories { mavenCentral() jcenter() } dependencies { classpath 'com.android.tools.build:gradle:2.1.0' classpath 'com.google.gms:google-services:2.1.0' } } apply plugin: 'com.android.application' […]

'isGooglePlayServicesAvailable'(this)已被弃用

我正在使用谷歌位置服务的tutuorial。 所以,我试图使用谷歌API服务的位置。 但是我得到了'isGooglePlayServicesAvailable'(这个)已被弃用的错误。 任何人都可以帮忙 谢谢 这是我的activity_add_dialog。 <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="match_parent" android:layout_height="wrap_content" android:paddingBottom="@dimen/activity_vertical_margin" android:paddingLeft="@dimen/activity_horizontal_margin" android:paddingRight="@dimen/activity_horizontal_margin" android:paddingTop="@dimen/activity_vertical_margin"> <TextView android:layout_width="match_parent" android:layout_height="wrap_content" android:text="ADD" android:gravity="center" android:textSize="20sp" android:textColor="#ffffff" android:background="#2AA78A" android:id="@+id/textView" /> <EditText android:layout_width="match_parent" android:layout_height="wrap_content" android:id="@+id/editName" android:paddingTop="50dp" android:hint="Place" android:layout_above="@+id/editLocation" android:layout_alignParentStart="true" /> <EditText android:layout_width="match_parent" android:layout_height="wrap_content" android:id="@+id/editLocation" android:hint="Location" android:layout_above="@+id/editDesc" android:layout_alignEnd="@+id/btnSnap" /> <EditText android:layout_width="match_parent" android:layout_height="wrap_content" android:id="@+id/editDesc" android:hint="Description" android:layout_above="@+id/editPrice" android:layout_alignEnd="@+id/btnSnap" /> <EditText android:layout_width="match_parent" […]

从Yahoo,Gmail和Hotmail下载已发送的邮件

我正在做一个Android应用程序,我想从一个特定的电子邮件帐户获得最后发送的25封邮件。 对于Gmail,我可能使用http://g4j.sourceforge.net/ ,在http://developer.yahoo.com/mail/上有用于Yahoo的Mail Web Service API。 但我找不到用Hotmail做的事情。 你知道这有可能吗? 我也担心有这么多的依赖。 我不知道我是否应该做一些像https://sourceforge.net/projects/mrpostman/和做网页抓取 。

Java相当于

我正在开发一个Android应用程序,我需要从一个活动到另一个在那首先我需要改变button的颜色,然后延迟(所以),然后调用这个相同的function(我现在在仪式现在) 在Objective-C中,它是通过[self performSelector:foo afterDelay:2]完成的。 所以我需要它的Java等价物。