小编Mik*_*ail的帖子

Kotlin-android:未解析的引用数据绑定

我使用新的数据绑定库在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)

java android kotlin android-databinding

132
推荐指数
9
解决办法
4万
查看次数

Android Studio为新项目创建项目模板

首先,我知道这个问题; 但我无法回答,因为那里没有提到的目录.

在创建新的Android Studio项目时,我希望自动创建以下内容:

  1. 特定的包和目录;
  2. Gradle依赖项
  3. 几个类(可能从其他地方导入)

是否可以为这些任务创建Android Studio模板?

android intellij-idea android-studio android-project-template

30
推荐指数
2
解决办法
8595
查看次数

在java switch表达式中使用kotlin常量

我最近一直在研究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.

java kotlin

15
推荐指数
1
解决办法
5289
查看次数

使用Mockito进行Android仪器测试

我正在尝试使用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,但错误是一样的.

java junit android unit-testing mockito

10
推荐指数
1
解决办法
5765
查看次数

Android注释和applicationIdSuffix

我一直在尝试了Android的注解最近,一切都一直工作顺利,直到我决定添加applicationIdSuffixbuildTypes我的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 …

android android-annotations android-gradle-plugin

8
推荐指数
2
解决办法
5892
查看次数

从Android工作室和控制台构建的Android APK具有不同的SHA指纹

在构建签名发布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

android apk gradlew android-studio android-gradle-plugin

8
推荐指数
1
解决办法
779
查看次数

Android数据绑定设置alignParentTop

我有以下布局(仅剩下相关部分):

<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 android-databinding

7
推荐指数
1
解决办法
1287
查看次数

android studio中的Kotlin插件错误

我正在尝试为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.gradleapp导演:

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

android kotlin android-studio

5
推荐指数
1
解决办法
1943
查看次数

减少在Android上使用libvlc播放rtp流时的延迟

我正在使用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毫秒,因为其他一些玩家可以在此延迟下播放它。我应该使用哪些选项来减少此延迟?我知道我必须为此付出代价,但是我该如何做呢?

java android vlc libvlc

3
推荐指数
1
解决办法
4358
查看次数

Haskell ghci用*和max读取行为

所以我刚刚在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行为的原因.任何帮助,将不胜感激!

haskell types typeclass

2
推荐指数
1
解决办法
58
查看次数

Rx Java仅订阅发出的一项

我有一个BehaviorSubject data包含实际数据的文件(如果没有发出任何数据,则可能不包含任何数据)。我只想订阅它发出的一个项目,即当前的观察值或第一个从其他地方传递给它的值。我目前正在通过以下方式进行操作:

Subscription firstItemSubscription = data.subscribe(item -> {
    firstItemSubscription.unsubscribe();
    processItem(item);
});
Run Code Online (Sandbox Code Playgroud)

我可以代替使用任何运算符或变压器吗?还是可能有完全不同的,更多的Rx方法可以让我做自己想做的事情?

java rx-java

2
推荐指数
1
解决办法
1196
查看次数

正则表达式替换中的 Perl 尖括号

我遇到了以下代码:

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)

尖括号是什么意思?

regex perl

2
推荐指数
1
解决办法
198
查看次数

如何使用gradlew从命令行运行2个任务

给定Android Studio发行版中的gradle包装器(gradlew),是否可以在一次命令调用中使用它运行两个任务?例如,现在我必须执行以下操作:

./gradlew task1
./gradlew task2
Run Code Online (Sandbox Code Playgroud)

./gradlew在执行两个任务时是否只能调用一次?

请注意,我不想task2依赖task1

android gradle gradlew android-studio

1
推荐指数
1
解决办法
1455
查看次数