Dagger 1的plus()方法是我以前在应用程序中经常使用的方法,所以我理解你可能希望有一个子组件可以完全访问父图形绑定的情况.
在什么情况下使用组件依赖项而不是子组件依赖项是有益的?为什么?
我以编程方式创建了一个sqlite数据库,使用默认的扩展SQLiteOpenHelper和覆盖方式onCreate().这样,db就会在需要时动态创建.
我想用sqlite浏览器检查OS X机器上db文件的内容.我知道db文件的名称,但我在设备上找不到它.我已经通过USB连接到设备并查找了finder和终端,但我找不到db文件.
android设备上的sqlite数据库的默认位置是什么?
我有一个gradle项目,我想在其中使用dagger 2.0.我不知道如何配置IntelliJ和gradle来生成文件并让IntelliJ找到它们?
我的build.gradle文件如下所示:
apply plugin: 'java'
apply plugin: 'idea'
version = '1.0'
repositories {
mavenCentral()
maven {
url "https://oss.sonatype.org/content/repositories/snapshots"
}
}
dependencies {
compile 'org.slf4j:slf4j-api:1.7.12'
compile 'org.slf4j:slf4j-simple:1.7.12'
compile 'commons-configuration:commons-configuration:1.10'
compile 'commons-collections:commons-collections:3.2.1'
compile 'com.google.dagger:dagger:2.0'
compile 'com.google.dagger:dagger-compiler:2.0:jar-with-dependencies'
compile 'com.pi4j:pi4j-distribution:1.1-SNAPSHOT'
}
Run Code Online (Sandbox Code Playgroud)
在我的应用程序的构建目录中,文件DaggerXmlConfigurationComponent存在,这是Dagger创建的组件.但我无法在IntelliJ中使用它,因为它找不到类.
这不是Android应用程序,而是Raspberry Pi的应用程序.
有人可以解释一下xliff:g字符串/本地化.
我知道xliff:g不应该在内容中翻译任何<>内容,但我很困惑我在代码中使用它的确切方式.
我的一个例子就是我所拥有的西班牙语翻译练习:
<string name="order_quantity">Cantidad: <xliff:g id="quantity" example="2">%d/xliff:g</string>
Run Code Online (Sandbox Code Playgroud)
我现在正试图让本地化的字符串xliff:g工作.这是id什么,它做什么?它叫什么?
另外什么是%d和它有什么作用?有什么意义example?另外,如果有的话,我怎么称它为代码呢?
为什么有人不能只是执行以下代码来插入以下xml:
<string name="quant">Quantity: </string>
Run Code Online (Sandbox Code Playgroud)
像这样进入java:
getString(R.string.quant) + quantity
Run Code Online (Sandbox Code Playgroud)
这样它将数量变量重新分配到getString?
Button当我使用android:backgroundxml中的属性为其设置背景时,我遇到了视图问题.在设置背景之前,该按钮具有默认大小.但是,当我将颜色作为背景,这是挺大的,虽然我没有设置不同的width或者height在其上.
在将background属性设置为button之前,这是我的xml布局
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical" android:layout_width="match_parent"
android:layout_height="match_parent">
<Button
android:background="@color/white"
android:layout_gravity="center_horizontal"
android:id="@+id/btn_row_option_done"
android:text="Done"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
<Button
android:background="@color/white"
android:layout_gravity="center_horizontal"
android:text="Edit"
android:id="@+id/btn_row_option_edit"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
<Button
android:layout_gravity="center_horizontal"
android:text="Delete"
android:id="@+id/btn_row_option_delete"
android:background="@color/red"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
<Button
android:layout_gravity="center_horizontal"
android:text="Cancel"
android:id="@+id/btn_row_option_cancel"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
</LinearLayout>
Run Code Online (Sandbox Code Playgroud)
所以取消按钮是默认大小,如截图.
但是当我在这样的取消按钮上设置颜色时
<Button
android:background="@color/white"
android:layout_gravity="center_horizontal"
android:text="Cancel"
android:id="@+id/btn_row_option_cancel"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
Run Code Online (Sandbox Code Playgroud)
然后按钮变得比默认大小更大,即使我没有使宽度或高度更大.
这是截图
如上所示,取消按钮变大了.其实我正在设置背景颜色.即使在设置背景颜色后,如何修复它以获得默认大小?
这是一个典型问题,因为这是Dagger 2的常见错误.
如果您的问题被标记为重复,请仔细阅读本文,并确保了解此错误的含义及其发生的原因.如果你一定要包括这个职位不工作在那里和如何您提供提到的类,并包括完整的错误消息,在最后的一个你的问题.
我尝试使用Dagger 2的依赖项,但是当我尝试编译项目时收到以下错误:
错误: com.example.如果没有@Inject构造函数或@ Provide -annotated方法,则无法提供MyDependency.
com.示例.MyDependency在
com.example.MyComponent.myDependency()中提供
这是什么意思,我该如何解决?
我有一个组件,并试图提供依赖.我的基本设置如下:
// this is the dependency I try to use
class MyDependency {}
@Component
interface MyComponent {
// I want to make it accessible to be used with my component
MyDependency myDependency();
}
Run Code Online (Sandbox Code Playgroud) 我在使用Dagger 2依赖注入框架时遇到了麻烦.我想创建一个EagerSingleton.我假设当我使用@Singleton注释时,匕首2会创建延迟加载的单例.如何使用Dagger 2框架创建EagerSingleton?
我想运行一个参数化的Instrumentation Test,它具有不同的语言环境,可以使用所有支持的语言运行相同的测试.
观察到的行为是,对于每个后续运行,活动都将具有第一次测试运行的本地化标题.因此,无论我的手机使用哪种语言,标题都将针对第一个参数化测试运行进行正确本地化,并且对于每个后续版本仍然相同.
虽然覆盖区域设置本身适用于任何资源,它会工作只有一次的活动标题,如果设置由AndroidManifest.xml.
活动似乎得到了他们的标题设置attach,无论调用附件似乎是缓存应用程序首次启动的区域设置中的标题.
final void attach(Context context, ActivityThread aThread,
Instrumentation instr, IBinder token, int ident,
Application application, Intent intent, ActivityInfo info,
---> CharSequence title, Activity parent, String id,
NonConfigurationInstances lastNonConfigurationInstances,
Configuration config, String referrer, IVoiceInteractor voiceInteractor) {
attachBaseContext(context);
Run Code Online (Sandbox Code Playgroud)
由于资源总是被正确地本地化,因此解决方法是调用setTitle(R.string.title)或只是getActionBar().setTitle(R.string.setTitle),但我不想仅为了测试目的而更改活动.
问题:如何在第一次测试运行后更改活动的标题?如上所述,这似乎被缓存并且没有正确更新,并且杀死应用程序以重新启动它将无法进行检测测试.
整个测试项目可以在GitHub上找到(Localization.java包含当前失败的单元测试和此处描述的问题)并且正在使用参数化单元测试UIAutomator.
我们的目标是在不了解应用程序本身(UIAutomator)的情况下拍摄一批截图,并且不需要为测试修改应用程序.
我在每次测试之前都成功地更改了语言环境,并通过执行以下操作正确显示了我的文本,同时我还有多个断言确保资源实际上是正确的语言环境.
public LocalizationTest(Locale locale) …Run Code Online (Sandbox Code Playgroud) android android-activity android-testing android-instrumentation android-uiautomator
我有多种视图类型,我RecyclerView想ItemDecoration根据视图类型添加一个.有没有办法做到这一点?
这将为每个元素添加一个装饰:
recyclerView.addItemDecoration(decoration);
Run Code Online (Sandbox Code Playgroud)
我看过这个库,但它只支持LinearLayoutManager垂直或水平,但我正在使用GrildLayoutManager,我使用drawables分隔.
我有一个应用程序SyncAdapter.除了正常的同步之外,我还会触发一个USER_READ事件,我只需将它传递Bundle给适配器而不保留它:
Bundle settingsBundle = new Bundle();
settingsBundle.putString(SyncAdapter.USER_READ, uid);
ContentResolver.requestSync(account, authority, settingsBundle);
Run Code Online (Sandbox Code Playgroud)
这将在将来的某个时候正确调用我的同步例程.每个uid组中的Bundle将触发其自己的运行,一切都被预期同步.
如果现在连接不好,或者请求超时,那么我设置了一个软错误:
syncResult.stats.numIoExceptions += 1;
Run Code Online (Sandbox Code Playgroud)
这将导致请求稍后重复.这也很好用.
这些SyncRequests/Bundles持续多长时间?
该文件指出,该遇到软错误将导致exponentional补偿和同步将在以后运行一段时间.
鉴于连接错误并且同步因软错误而多次失败:我想知道是否只是将同步请求排入队列,或者我是否必须自己提供某种持久性以确保在某些时候发送请求.