我使用新的数据绑定库在Java中编写了以下片段类
import com.example.app.databinding.FragmentDataBdinding;
public class DataFragment extends Fragment {
@Nullable
private FragmentDataBinding mBinding;
@Nullable
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
mBinding = DataBindingUtil.inflate(inflater, R.layout.fragment_data, container, false);
return mBinding.getRoot();
}
}
Run Code Online (Sandbox Code Playgroud)
它编译并运行良好.
我试图在Kotlin中重写它并提出以下内容:
import com.example.app.databinding.FragmentDataBdinding
class ProfileFragment : Fragment() {
private var mBinding: FragmentDataBinding? = null
override fun onCreateView(inflater: LayoutInflater?, container: ViewGroup?, savedInstanceState: Bundle?): View? {
mBinding = DataBindingUtil.inflate(inflater, R.layout.fragment_data, container, false)
return mBinding!!.getRoot()
}
}
Run Code Online (Sandbox Code Playgroud)
但现在步骤:app:compileDebugKotlin输出如下:
错误:(16,38)未解析的引用:数据绑定
错误:(37,27)未解析的引用:FragmentDataBinding
如何在Kotlin中使用android-databinding库?
我的顶级build.gradle:
buildscript { …Run Code Online (Sandbox Code Playgroud) 首先,我知道这个问题; 但我无法回答,因为那里没有提到的目录.
在创建新的Android Studio项目时,我希望自动创建以下内容:
是否可以为这些任务创建Android Studio模板?
android intellij-idea android-studio android-project-template
我最近一直在研究Kotlin lang和它与java的互操作.我有以下java代码:
public void select(int code) {
switch code {
case Service.CONSTANT_ONE:
break;
case Service.CONSTANT_TWO:
break;
default:
break;
}
}
Run Code Online (Sandbox Code Playgroud)
凡Service.kt写法如下:
class Service {
companion object {
val CONSTANT_ONE = 1
val CONSTANT_TWO = 2
}
}
Run Code Online (Sandbox Code Playgroud)
Java编译器说,CONSTANT_ONE和CONSTANT_TWO必须是常量,但我不知道,我怎么可以让他们更恒定的比现在.所以我的问题是:如何在java swicth语句中使用kotlin中的常量?
我正在使用jdk8和kotlin M14.
我正在尝试使用Mockito框架与android仪器测试,但我无法正确初始化它.我有以下测试类:
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);
}
}
Run Code Online (Sandbox Code Playgroud)
当我尝试运行此测试时,我收到以下错误和堆栈跟踪:
位于org.mockito.internal.creation.cglib.ClassImposterizer.imposterise(ClassImposterizer.java:57)的org.mockito.internal.creation.cglib.ClassImposterizer.createProxyClass(ClassImposterizer.java:95)中的java.lang.ExceptionInInitializerError.在org.mockito.internal.util.MockUtil的org.mockito.internal.creation.cglib.CglibMockMaker.createMock(CglibMockMaker.java:24)中的mockito.internal.creation.cglib.ClassImposterizer.imposterise(ClassImposterizer.java:49).在org.mockito.intern.conf.MockAnnotationProcessor的org.mockito.Mockito.mock上的org.mockito.internal.MockitoCore.mock(MockitoCore.java:59)中的createMock(MockUtil.java:33)(Mockito.java:1285) org.mockito.internal.configuration.MockAnnotationProcessor.process(MockAnnotationProcessor.java:16)中的.process(MockAnnotationProcessor.java:33)org.mockito.internal.configuration.DefaultAnnotationEngine.createMockFor(DefaultAnnotationEngine.java:43)at org. mockito.internal.configuration.DefaultAnnotationEngine.process(DefaultAnnotationEn gine.java:66)org.mockito.internal.configuration.InjectingAnnotationEngine.processIndependentAnnotations(InjectingAnnotationEngine.java:71)org.mockito.internal.configuration.InjectingAnnotationEngine.process(InjectingAnnotationEngine.java:55)atg.mockito.MockitoAnnotations .initMocks(MockitoAnnotations.java:108)位于junit.framework的junit.framework.TestCase.runBare(TestCase.java:132)的org.arkadiy.moduledelegationsample.ui.main.MainKontorTest.setUp(MainKontorTest.java:20). TestResult $ 1.protect(TestResult.java:115)在android.support.test.internal.runner.junit3.AndroidTestResult.runProtected(AndroidTestResult.java:77)的junit.framework.TestResult.run(TestResult.java:118)at在android.support.test.inun.runner.junit3的junit.framework.TestCase.run(TestCase.java:124)上的android.support.test.internal.runner.junit3.AndroidTestResult.run(AndroidTestResult.java:55). 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) .junit3.AndroidTestSuite.run(AndroidTestSuite.java:69)位于org.junit.runners.Suite.runChild(Suite.java)的android.support.test.internal.runner.junit3.JUnit38ClassRunner.run(JUnit38ClassRunner.java:90) :128)org.junit.runners.Suite.runChild(Suite.java:27)org.junit.runners.ParentRunner $ 3.run(ParentRunner.java:290)at org.junit.runners.ParentRunner $ 1.schedule( ParentRunner.java:71)org.junit.runners.ParentRunner.runChildren(ParentRunner.java:288)org.junit.runners.ParentRunner.access $ 000(ParentRunner.java:58)org.junit.runners.ParentRunner $ 2 .在org.junit.runner.runner的org.junit.runner.JUnitCore.run(JUnitCore.java:137)的org.junit.runners.ParentRunner.run(ParentRunner.java:363)上评估(ParentRunner.java:268). JUnitCore.run(JUnitCore.java:115)在android.support.test.internal.runner.TestE xecutor.execute(TestExecutor.java:54)在android.sapp.Instrumentation上的android.support.test.runner.AndroidJUnitRunner.onStart(AndroidJUnitRunner.java:240)$ InstrumentationThread.run(Instrumentation.java:1869)引起:org .mockito.cglib.core.CodeGenerationException:java.lang.reflect.InvocationTargetException - > null org.mockito.cglib.core.AbstractClassGenerator.create(AbstractClassGenerator.java:238)at org.mockito.cglib.core.KeyFactory $ Generator.create(KeyFactory.java:145)位于org.mockito.cglib.core.KeyFactory.create(KeyFactory.java:117)的org.mockito.cglib.core.KeyFactory.create(KeyFactory.java:109)org .mockito.cglib.core.KeyFactory.create(KeyFactory.java:105)at org.mockito.cglib.proxy.Enhancer.(Enhancer.java:70)... 40更多引起:java.lang.reflect.InvocationTargetException at java.lang.reflect.Method.invoke(Native Method),位于org.mockito.cglib.core.ReflectUtils.defineClass(ReflectUtils.java:385)的java.lang.reflect.Method.invoke(Method.java:372)在org.mockito.cglib.cor e.AbstractClassGenerator.create(AbstractClassGenerator.java:220)... 45更多引起:java.lang.UnsupportedOperationException:无法在java.lang.ClassLoader.defineClass(ClassLoader.java:300)中加载此类类文件......还有49个
如何使用Mockito进行仪器测试?我尝试过使用Mockito和更新的规则api,但错误是一样的.
我一直在尝试了Android的注解最近,一切都一直工作顺利,直到我决定添加applicationIdSuffix在buildTypes我的build.gradle文件.目前它看起来像这样:
buildTypes {
debug {
applicationIdSuffix '.debug'
}
...
}
Run Code Online (Sandbox Code Playgroud)
在编译时,我在gradle控制台中获得以下日志:
:app:preDebugBuild UP-TO-DATE
:app:checkDebugManifest
:app:preReleaseBuild UP-TO-DATE
:app:pre_testBuild UP-TO-DATE
:app:prepareComAndroidSupportAppcompatV72220Library UP-TO-DATE
:app:prepareComAndroidSupportSupportV42220Library UP-TO-DATE
: app:prepareDebugDependencies
:app:compileDebugAidl UP-TO-DATE
:app:compileDebugRenderscript UP-TO-DATE
:app:generateDebugBuildConfig UP-TO-DATE
:app:generateDebugAssets UP-TO-DATE
:app:mergeDebugAssets UP-TO-DATE
:app :generateDebugResValues UP-TO-DATE
:app:processDebugGoogleServices
找不到包名为'org.me.myapp.debug'的匹配客户端
:app:generateDebugResources
:app:mergeDebugResources UP-TO-DATE
:app:processDebugManifest UP-TO-DATE
: app:processDebugResources UP-TO-DATE
:app:generateDebugSources UP-TO-DATE
:app:processDebugJavaRes UP-TO-DATE
:app:compileDebugJavaWithJavac
注意:将日志文件解析为/ dir/myapp/app/build/generated/source/apt /androidannotations.log
注意:使用选项{androidManifestFile =/d初始化AndroidAnnotations 3.3.1 ir/myapp/app/build/intermediates/manifests/full/debug/AndroidManifest.xml}
注意:开始处理18个元素上的4个注释
注意:使用指定路径找到AndroidManifest.xml文件:/ dir/myapp/app/build /中间体/清单/完整/调试/ AndroidManifest.xml注意:AndroidManifest.xml发现:AndroidManifest [applicationPackage = org.me.myapp.debug,componentQualifiedNames = [org.me.myapp.ui.MainActivity_,net.hockeyapp.android.UpdateActivity ],permissionQualifiedNames = [android.permission.ACCESS_WIFI_STATE,android.permission.ACCESS_NETWORK_STATE],applicationClassName …
在构建签名发布APK时,我遇到了以下内容:如果我从android studio(via Build- > Generate Signed APK...)构建带有这样的build.gradle文件的签名apk (仅限相关部分):
signingConfigs {
release {
storeFile file('/keystore/location/mykeystore.keystore')
storePassword 'storepassword'
keyAlias 'key'
keyPassword 'keypassword'
}
}
buildTypes {
release {
signingConfig signingConfigs.release
}
}
Run Code Online (Sandbox Code Playgroud)
生成的apk指纹是YY:YY.
但是,如果我从控制台建立我的APK描述这里有build.gradle这样的:
buildTypes {
release {
}
}
Run Code Online (Sandbox Code Playgroud)
并使用相同的密钥库文件对其进行签名,得到的apk指纹就是XX:XX.
此外,两个SHA指纹都与我的调试证书SHA指纹不同.这种行为的原因是什么?
我正在使用buildToolsVersion 23.0.0
android studio gradle版本1.3.0
android sdk工具版本24.3.4
android studio版本1.3.1
我有以下布局(仅剩下相关部分):
<RelativeLayout>
<View android:layout_alignParentTop="true"/>
</RelativeLayout>
Run Code Online (Sandbox Code Playgroud)
我尝试layout_alignParentTop使用<data>块中声明的变量设置属性,如下所示:
<data>
<variable
name="condition"
type="Boolean"/>
</data>
<RelativeLayout>
<View android:layout_alignParentTop="@{condition}"/>
</RelativeLayout>
Run Code Online (Sandbox Code Playgroud)
但是在尝试编译时,android studio说如下:
错误:找不到参数类型为java.lang.Boolean的属性'android:layout_alignParentTop'的setter.
如何layout_alignParentTop使用数据绑定变量设置属性?
我正在尝试为Android studio设置kotlin插件并遵循本指南.一切都编译得很好,我可以.kt在我的项目中使用文件.但是,在每个kotlin文件中android-studio都说如下:
Kotlin库'compiler-1.0-rc1.jar'的格式不受支持.请更新库或插件
如何删除此警告/错误?
这是我的顶级build.gradle:
buildscript {
repositories {
mavenCentral()
jcenter()
}
dependencies {
classpath 'com.android.tools.build:gradle:1.3.0'
classpath 'me.tatarka:gradle-retrolambda:3.2.3'
classpath "com.android.databinding:dataBinder:1.0-rc1"
classpath 'org.jetbrains.kotlin:kotlin-gradle-plugin:0.14.449'
}
}
allprojects {
repositories {
mavenCentral()
jcenter()
}
}
Run Code Online (Sandbox Code Playgroud)
这是我build.gradle的app导演:
apply plugin: 'com.android.application'
apply plugin: 'kotlin-android'
android {
//Ommited for brevity
sourceSets {
main.java.srcDirs += 'src/main/kotlin'
}
}
dependencies {
compile 'org.jetbrains.kotlin:kotlin-stdlib:0.14.449'
}
Run Code Online (Sandbox Code Playgroud)
我正在使用Android studio 1.4,
buildToolsVersion 23.0.1,
Android studio kotlin插件版本0.14.449.Idea141.12
我正在使用LibVLC 3.0.0版在Android上通过rtp播放传入的mpeg2ts流。代码如下:
SurfaceView playerView; //Initialized somewhere before
LibVLC libVlc = new LibVLC(context, arrayListOf("--file-caching=150", "--network-caching=150",
"--clock-jitter=0", "--live-caching=150", "--clock-synchro=0",
"-vvv", "--drop-late-frames", "--skip-frames"));
MediaPlayer player = new MediaPlayer(libVlc);
IVLCVout vout = player.getVLCVout();
vout.setVideoView(playerView);
vout.attachViews();
Media media = new Media(libVlc, Uri.parse("rtp://@:" + UDP_PORT + "/"));
player.setMedia(media);
player.play();
Run Code Online (Sandbox Code Playgroud)
这确实会播放流,但是会有大约2秒的延迟。我肯定可以将延迟减少到300毫秒,因为其他一些玩家可以在此延迟下播放它。我应该使用哪些选项来减少此延迟?我知道我必须为此付出代价,但是我该如何做呢?
所以我刚刚在ghci中遇到了以下内容:
(*) (read "10") (read "20")
Run Code Online (Sandbox Code Playgroud)
按预期返回200.但是,这一行
(max) (read "10") (read "20")
Run Code Online (Sandbox Code Playgroud)
抛出异常:
*** Exception: Prelude.read: no parse
Run Code Online (Sandbox Code Playgroud)
我无法弄清楚这种ghci行为的原因.任何帮助,将不胜感激!
我有一个BehaviorSubject data包含实际数据的文件(如果没有发出任何数据,则可能不包含任何数据)。我只想订阅它发出的一个项目,即当前的观察值或第一个从其他地方传递给它的值。我目前正在通过以下方式进行操作:
Subscription firstItemSubscription = data.subscribe(item -> {
firstItemSubscription.unsubscribe();
processItem(item);
});
Run Code Online (Sandbox Code Playgroud)
我可以代替使用任何运算符或变压器吗?还是可能有完全不同的,更多的Rx方法可以让我做自己想做的事情?
我遇到了以下代码:
my $string = "fo2345obar";
$string =~ s<(\d+)><$1\.>g;
Run Code Online (Sandbox Code Playgroud)
我无法理解尖括号在这种情况下的含义;我之前看到的所有替换都是形式:
$string =~ s/(\d+)/$1\./g;
Run Code Online (Sandbox Code Playgroud)
尖括号是什么意思?
给定Android Studio发行版中的gradle包装器(gradlew),是否可以在一次命令调用中使用它运行两个任务?例如,现在我必须执行以下操作:
./gradlew task1
./gradlew task2
Run Code Online (Sandbox Code Playgroud)
./gradlew在执行两个任务时是否只能调用一次?
请注意,我不想task2依赖task1。