我的格式化程序一直在做这样的事情。当我尝试将方法调用放在单独的行中时。例如我有这样的代码:
main() {
SomeObject()
.someMethod()
.someMethodWithArgument('someArgument')
.someMethodWithArgument('someOtherArgument');
}
Run Code Online (Sandbox Code Playgroud)
点击快速格式化后,我得到了类似的东西:
main() {
SomeObject().someMethod().someMethodWithArgument('someArgument')
.someMethodWithArgument('someOtherArgument');
}
Run Code Online (Sandbox Code Playgroud)
它让我发疯,在我看来这是完全不可读的。我在 Android Studio 首选项中尝试了格式设置,但找不到可以解决此特定格式问题的任何内容。
我不喜欢在布局中使用xml做很多事情,但我可以很好地阅读它,一切正常.为什么会出现此警告?我可以肯定地禁用它,但我只是不理解它.我只是希望底部视图捕获点击事件,这样他们就不会陷入困境,这似乎运作良好且可点击是这样做的,所以我根本不需要专注于那里,但我看到它......
在我的Android应用程序中,我想绘制两个图像 - img1和img2.首先,我将绘制img2 Canvas
.之后,我将绘制Canvas
与img2重叠的img1 .Img1包含透明部分.问题是,img1的透明部分以黑色显示,但我希望通过img1的透明部分可以看到img2.我无法做到这一点.请帮我解决这个问题.谢谢.
码:
protected void onDraw(Canvas canvas) {
super.onDraw(canvas);
Bitmap b = BitmapFactory.decodeResource(getResources(),
R.drawable.white_bg); //img2
canvas.drawBitmap(b, 0, 0, null);
canvas.save();
canvas.drawBitmap(realImage, 0, 0, null); //img1
}
Run Code Online (Sandbox Code Playgroud) 当我尝试使用 WearableActivity 中的 LiveData 时遇到问题:
val livedata = ...
val observer = ...
livedata.observe(this, observer)
Run Code Online (Sandbox Code Playgroud)
当我使用扩展 AppCompatActivity 的活动时它工作,但看起来 WearableActivity 没有实现 LifecycleOwner 接口,尽管它确实拥有生命周期,对吧?(observe 方法需要 LifecycleOwner 作为第一个参数)。我怎样才能让它工作?
我的本地单元测试始终使用LiveData。通常,当您尝试在MutableLiveData上设置值时,会得到
java.lang.RuntimeException: Method getMainLooper in android.os.Looper not mocked.
Run Code Online (Sandbox Code Playgroud)
因为本地JVM无法访问Android框架。我使用以下方法修复了该问题:
@get:Rule
val rule = InstantTaskExecutorRule()
Run Code Online (Sandbox Code Playgroud)
一切都很好,直到我不得不使用PowerMockito模拟来自Google Play库的静态方法。自从我添加
@RunWith(PowerMockRunner::class)
@PrepareForTest(Tasks::class)
Run Code Online (Sandbox Code Playgroud)
在我的测试类声明之上,我开始再次得到这个Looper not模拟错误。我之前在MockitoJUnitRunner中使用了此规则,一切都很好。
我正在尝试在新应用程序中实现 Dagger2 注入,唯一失败的是 DaggerAppCompatActivity 和 SupportFragmentInjector。
当我转到 DaggerAppCompatActivity 代码时,我看到:
它尝试在 androidx 重构之前从库版本中引用 AppCompatActivity 和 Fragment。当我继承这个类时,我什至不能调用 setContentView(),因为它不可用。
我想将此代码复制粘贴到我自己的基本活动中,但 HasSupportFragmentInjector 使用 pre-adroidX Fragment。
有没有办法让它与 AndroidX 一起工作?
编辑:这是我在尝试使用 DaggerAppCompatActivity 作为@ContributesAndroidInjector 提到的活动的基类时得到的错误。如果我只是简单地做 AndroidInjection.inject(this) 而不是这个继承,它工作得很好。
C:\Users\micha\Workspace\StudioProjects\BirthdayGift\app\build\tmp\kapt3\stubs\debug\com\mpowloka\birthdaygift\common\di\ApplicationComponent.java:8: error: [Dagger/MissingBinding] [dagger.android.AndroidInjector.inject(T)] java.util.Map<java.lang.Class<? extends androidx.fragment.app.Fragment>,javax.inject.Provider<dagger.android.AndroidInjector.Factory<? extends androidx.fragment.app.Fragment>>> cannot be provided without an @Provides-annotated method.
public abstract interface ApplicationComponent {
^
java.util.Map<java.lang.Class<? extends androidx.fragment.app.Fragment>,javax.inject.Provider<dagger.android.AndroidInjector.Factory<? extends androidx.fragment.app.Fragment>>> is injected at
dagger.android.DispatchingAndroidInjector.<init>(injectorFactories)
dagger.android.DispatchingAndroidInjector<androidx.fragment.app.Fragment> is injected at
dagger.android.support.DaggerAppCompatActivity.supportFragmentInjector
com.mpowloka.birthdaygift.persons.PersonsActivity is injected at
dagger.android.AndroidInjector.inject(T)
component path: com.mpowloka.birthdaygift.common.di.ApplicationComponent ? com.mpowloka.birthdaygift.common.di.ActivityBindingModule_PersonsActivity.PersonsActivitySubcomponent
Run Code Online (Sandbox Code Playgroud)
编辑 2:我的项目依赖项(包含在单独的 gradle 文件中): …
我的应用程序以 hh:mm:ss 格式显示剩余时间,例如,01:05:45 代表一小时 5 分 45 秒。
当小时或分钟为零时,我不想显示它们。目前,如果还剩 45 秒,我的计时器将显示“00:00:45”。预期的结果只是“45”。
我需要某种 Java/Kotlin/Android 方法来产生以下输出:
目前我使用这样的字符串作为格式化程序:
<string name="time_default_formatter" translatable="false">%02d:%02d:%02d</string>
Run Code Online (Sandbox Code Playgroud)
我试图用“”手动替换字符串“00:”,但在第三个例子中失败了。另外,我认为标准格式应该提供类似的东西,但我一直找不到它。
编辑:我可以用代码来做。问题是我正在寻找一个优雅的解决方案。
我的程序需要生成由标签、日期和时间组成的唯一标签。像这样的东西:
"myTag__2019_09_05__07_51"
Run Code Online (Sandbox Code Playgroud)
如果一个人试图在同一分钟内生成两个具有相同标签的标签,一个人将收到相同的标签,这是我不能允许的。我考虑添加作为 System.nanoTime() 的附加后缀结果,以确保每个标签都是唯一的(我无法访问之前生成的所有标签来查找重复项):
"myTag__2019_09_05__07_51__{System.nanoTime() result}"
Run Code Online (Sandbox Code Playgroud)
我可以相信每次调用 System.nanoTime() 都会产生不同的值吗?我在我的笔记本电脑上进行了这样的测试:
assertNotEquals(System.nanoTime(), System.nanoTime())
Run Code Online (Sandbox Code Playgroud)
这有效。我想知道我是否能保证它永远有效。
android ×6
kotlin ×3
java ×2
android-room ×1
android-view ×1
androidx ×1
bitmap ×1
dagger ×1
dart ×1
flutter ×1
format ×1
ondraw ×1
powermockito ×1