小编Chi*_*sko的帖子

close()和disconnect()之间的区别?

Android的蓝牙低功耗API实现1种方法连接到该设备connectGatt(),但2种方法来关闭连接disconnect()close().

文件说:

  • disconnect():断开已建立的连接,或取消当前正在进行的连接尝试.

  • close():应用程序应在使用此GATT客户端完成后尽早调用此方法.

BluetoothGatt.java的源代码显示close()取消注册应用程序,disconnect()断开客户端连接.然而,它没有说明实际意味着什么.我的意思是,如果只有一种方法可以连接到客户端,为什么有两种方法可以关闭/断开连接?

android bluetooth bluetooth-lowenergy

43
推荐指数
2
解决办法
3万
查看次数

在Kotlin中使用Room的@ForeignKey作为@Entity参数

我遇到了一个使用类定义注释的Room 教程@PrimaryKey:

@Entity(foreignKeys = @ForeignKey(entity = User.class,
                              parentColumns = "id",
                              childColumns = "userId",
                              onDelete = CASCADE))
public class Repo {
    ...
}
Run Code Online (Sandbox Code Playgroud)

现在,我有以下想要使用主键的数据类:

@Parcel(Parcel.Serialization.BEAN) 
data class Foo @ParcelConstructor constructor(var stringOne: String,
                                              var stringTwo: String,
                                              var stringThree: String): BaseFoo() {

    ...
}
Run Code Online (Sandbox Code Playgroud)

所以,我刚刚@Entity(tableName = "Foo", foreignKeys = @ForeignKey(entity = Bar::class, parentColumns = "someCol", childColumns = "someOtherCol", onDelete = CASCADE))在顶部添加了片段,但我无法编译:

注释不能用作注释参数.

我想知道:为什么(我认为是)使用Java而不是在Kotlin中使用相同的概念?还有,有办法解决这个问题吗?

欢迎所有输入.

java android kotlin java-annotations android-room

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

Android Studio"没有找到测试"

有没有人能够在Android Studio中运行测试(从GUI而不是终端),我无法从GUI运行测试.

每次我尝试通过GUI运行测试时,我只会收到以下消息:

在此输入图像描述

我可以使用以下命令从终端运行测试:

./gradlew connectedAndroidTest
Run Code Online (Sandbox Code Playgroud)

我正在运行的Android 0.5.2工作室摇篮1.11与插件0.9.0的Mac OSX

我的项目结构如下;

MyProject/
   src/
      androidTest/
         java/
             com.myproject.app.test/
                … (tests source code) …
      main/
         java/
             com.myproject.app/
                … (source code) …
         res/
                … (resources code) …
   build.gradle
Run Code Online (Sandbox Code Playgroud)

我的build.gradle文件类似于以下内容:

…
android {
    compileSdkVersion 19
    buildToolsVersion "19.0.1"

    defaultConfig {
        versionCode 12
        versionName "2.0"
        minSdkVersion 9
        targetSdkVersion 19       
    testPackageName "com.test.foo"
        testInstrumentationRunner "android.test.InstrumentationTestRunner"
    }
}
…
Run Code Online (Sandbox Code Playgroud)

如果有人有任何建议,我会非常高兴在这里.

testing android gradle android-studio

26
推荐指数
5
解决办法
2万
查看次数

VS2015 Professional中的SQL Server对象资源管理器未显示Azure数据库

微软再一次.因此,Visual Studio中的SQL对象资源管理器停止工作并以黄色显示错误.提到的元素是我为了使用AES加密而生成的对称密钥.现在拥有它对我来说没用,因为如果我想要检查表结构,我必须打开SSMS.关于如何解决这个问题的任何想法?

错误显示为黄色

编辑

请停止指定更新Azure SDK的答案,它没有关联,也没有用

sql sql-server azure visual-studio azure-sql-database

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

错误:无法找到或加载主类org.gradle.wrapper.GradleWrapperMain

我已经反应原生版本0.42.0.我的项目工作正常.

最近我升级到react-native版本0.43.1.而现在,当我这样做

react-native run-android
Run Code Online (Sandbox Code Playgroud)

我遇到了错误.

JS server already running.
Building and installing the app on the device (cd android && ./gradlew installDebug)...
Error: Could not find or load main class org.gradle.wrapper.GradleWrapperMain
Could not install the app on the device, read the error above for details.
Make sure you have an Android emulator running or a device connected and have
set up your Android development environment:
https://facebook.github.io/react-native/docs/android-setup.html
Run Code Online (Sandbox Code Playgroud)

我已按照https://facebook.github.io/react-native/docs/upgrading.html的升级说明进行操作

我用谷歌搜索了这个问题.通过以下链接,没有一个对我有用.

  1. 无法找到或加载主类org.gradle.wrapper.GradleWrapperMain

  2. 错误:无法找到或加载主类org.gradle.wrapper.GradleWrapperMain

  3. 如何/何时生成Gradle包装器文件?

任何形式的帮助/指导对我都有帮助.

android-gradle-plugin react-native react-native-android

13
推荐指数
2
解决办法
4万
查看次数

使用条形码扫描仪遮罩的透明视图对本机相机进行反应

如何在react-native-camera顶部添加一个掩码?

我正在使用react-native-camera为React Native QRCode扫描仪应用程序构建UI.

相机顶部的覆盖遮罩应为浅灰色,但中间部分必须保持透明(透视).

但是当我在外面罩上更改backgroundColor时,它似乎也会影响中心部分.我的意思是,当然,它背后是儿童观.

下面的代码是快照的简化版本.

<Camera
  ref={cam => {
    this.camera = cam;
  }}
  onBarCodeRead={this._onBarCodeRead}
  style={styles.cameraView}
  aspect={Camera.constants.Aspect.fill}
  playSoundOnCapture
>
  <View
    style={{
      position: 'absolute',
      top: 0,
      left: 0,
      width: '100%',
      height: '100%',
      backgroundColor: 'rgba(0.2, 0.2, 0.2, 0.2)',
      alignItems: 'center',
      justifyContent: 'space-around',
    }}
  >
    <View
      style={{
        width: 300,
        height: 300,
        backgroundColor: 'transparent',
        borderColor: 'white',
        borderWidth: 1,
      }}
    />
  </View>
</Camera>
Run Code Online (Sandbox Code Playgroud)

基本的想法就在这里

知道怎么做到这一点?

css react-native react-native-camera

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

数据绑定按钮onclick无法正常工作

activity_layout.xml

<?xml version="1.0" encoding="utf-8"?>
<layout xmlns:android="http://schemas.android.com/apk/res/android">

    <data>
        <import type="android.view.View" />

        <variable
            name="callback"
            type="com.buscom.ActionCallBack" />
    </data>

    <LinearLayout xmlns:app="http://schemas.android.com/apk/res-auto"
        android:id="@+id/ll_oml"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:background="@color/grey_50"
        android:orientation="vertical">

        <android.support.design.widget.CoordinatorLayout
            android:layout_width="match_parent"
            android:layout_height="match_parent">
            <Button
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:onClick="@{(v) -> callback.onClick(v)}"
                android:text="Menu" />
        </android.support.design.widget.CoordinatorLayout>
    </LinearLayout>
</layout>
Run Code Online (Sandbox Code Playgroud)

ActionCallBack.java

这是我在MainActivity中实现的接口

public interface ActionCallback { 
    void onClick(View view);
}
Run Code Online (Sandbox Code Playgroud)

MainActivity.java

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    binding = DataBindingUtil.setContentView(this, R.layout.activity_main);
    actionCallBack = new ActionCallBack() {

        @Override
        public void onClick(View view) {
            System.out.println("Call onclick method *****");
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

当我点击按钮onClick()方法没有被激发时,注意显示在输出中或没有执行任何操作.但是使用onClickListener以传统方式工作

android android-databinding

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

集成外部纯Java库并对其进行Android类访问

我在尝试获取外部Java项目时遇到了麻烦,因此我也可以在其上使用Android类.该库已集成在Android项目中.例如:我有几个我想要实现的模型类,Parcelable因此它们可以相应地进行串行化,但是没有一个Android类可用.

澄清我只是为了试图解决这个问题而这样做

到目前为止我只尝试过:

  • 更改和匹配外部库的包:

Android中的包名称

com.domain.androidproject

图书馆的包最初

com.domain.libproject

变成:

com.dommain.androidproject.libproject

但到目前为止没有运气.我将库导入为Gradle外部项目vía:

compile project(path: ':LibProject')
Run Code Online (Sandbox Code Playgroud)

谢谢您的帮助.

java android shared-libraries android-studio

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

Android Build Tools无论如何都只构建x86_64.APK通过adb安装,但在Play商店中显示不兼容

所以这发生了.无论我在build.gradle上尝试做什么,所有APK都会带有native_code = 'x86_64'标志,所以当我将应用程序部署到商店时,结果是有+ 15K不兼容的设备,只有19兼容.我首先想到,不知何故,安装NDK是原因,或者我修改后的构建脚本.但是当我通过Generate Signed APK向导时,它仍然会发生.该splits区块最初也失踪了,并没有帮助.最奇怪的是,当我通过控制台推送安装时,IT工作!

WTF! WTF2!

我也试过切换到推荐的JRE,还有几个关于文件创建的APK命名策略,比如将输出移动到不同的目录或不使用文件构造函数.

build.gradle看起来像这样:

defaultConfig {
    applicationId "com.chiskosystems.brokr"
    versionCode versionNumber
    versionName "${versionMajor}.${versionMinor}.${versionPatch} (${versionBuild}) Release"
    minSdkVersion 16
    targetSdkVersion 25
    testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
    multiDexEnabled true

    jackOptions {
        enabled false
    }

    vectorDrawables {
        useSupportLibrary true
    }
}

splits {
    abi {
        enable true
        reset()
        include 'armeabi', 'armeabi-v7a', 'arm64-v8a'
    }
}

project.ext.versionCodes = ['armeabi': 1, 'armeabi-v7a': 2, 'arm64-v8a': 3]

applicationVariants.all { variant ->
    variant.outputs.each { output ->
        def fileNaming = "apk/brokr"
        def outputFile = output.outputFile …
Run Code Online (Sandbox Code Playgroud)

android build build-tools gradle

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

升级到gradle后无法编译项目:2.1.0-alpha5

我有一个与pre-gradle完美配合的Android项目:2.1.0-alpha3版本.现在它正在抛出这些错误而不知道如何解决它们:

Error:Execution failed for task ':app:compileDebugJavaWithJavac'.
> java.lang.NoSuchMethodError: com.google.common.collect.FluentIterable.append(Ljava/lang/Iterable;)Lcom/google/common/collect/FluentIterable;
Run Code Online (Sandbox Code Playgroud)

这很奇怪,有一个特定的分支,在过去的四五天也用于在apk中抛出重复的对象,详情请点击这里

我的应用程序的模块build.gradle:

buildscript {
    repositories {
        jcenter()
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:2.1.0-alpha5'
        classpath 'com.neenbedankt.gradle.plugins:android-apt:1.8'
    }
}

allprojects {
    repositories {
        jcenter()
    }

    gradle.projectsEvaluated {
        tasks.withType(JavaCompile) {
            options.compilerArgs << "-Xlint:unchecked"
        }
    }
}

task clean(type: Delete) {
    delete rootProject.buildDir
}
Run Code Online (Sandbox Code Playgroud)

和我的模块的build.gradle:

apply plugin: 'com.android.application'
apply plugin: 'com.neenbedankt.android-apt'

android {
    compileSdkVersion 23
    buildToolsVersion '23.0.3'

    defaultConfig {
        applicationId "..."
        minSdkVersion 14
        targetSdkVersion 23
        versionCode 1
        versionName "1.0"
        multiDexEnabled true
    }
    dataBinding {
        enabled …
Run Code Online (Sandbox Code Playgroud)

android build.gradle android-gradle-plugin gradle-plugin

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

从Firebase数据库获取具有相同数据类的数据的不一致性

在我的Firebase实时数据库中,我有两个用于调试和发布版本的主要分支.debug分支工作正常,但是当获取release分支时,price字段在转换为下面的map或list之后总是具有零值,而其他三个字段反映来自DB的正确值.请注意,在DB上使用整数或小数字段没有区别.这就是我的数据的样子:

数据库预览

这是我的数据类问题

data class JsonProducto(var id: String,
                    var name: String,
                    var description: String,
                    var price: Double) : Parcelable {
    constructor() : this(
            "id",
            "name",
            "desc",
            0.0
    )

    constructor(source: Parcel) : this(
            source.readString(),
            source.readString(),
            source.readString(),
            source.readDouble()
     )

     override fun describeContents() = 0

     override fun writeToParcel(dest: Parcel, flags: Int) = with(dest) {
        writeString(id)
        writeString(name)
        writeString(description)
        writeDouble(price)
    }

    companion object {
        @JvmField
        val CREATOR: Parcelable.Creator<JsonProducto> = object : Parcelable.Creator<JsonProducto> {
            override fun createFromParcel(source: Parcel): JsonProducto = JsonProducto(source)
            override fun newArray(size: Int): …
Run Code Online (Sandbox Code Playgroud)

android kotlin firebase firebase-realtime-database

6
推荐指数
0
解决办法
381
查看次数

react-native - TouchableHighlight:在 onPress 后删除突出显示?

我正在开发一个简单的 react-native 应用程序,并且在 TouchableHighlight 上遇到了一个问题:

按 时TouchableHighlight,将显示一个新屏幕(使用 中的 StackNavigator react-navigation)。按下后退按钮并返回到原始屏幕后,TouchableHighlight仍然具有黑色背景色 - 这意味着它仍然突出显示。

我的问题是:

  • 有没有办法手动停用TouchableHighlight-component的突出显示?这样我就可以在onPress运行后禁用突出显示。
  • TouchableHighlight突出显示停留的可能原因是什么?我在没有导航的情况下在应用程序的其他部分使用它,我可以想象它与此有关。

TouchableHighlight一个FlatList中存在。renderItems 方法如下所示:

let handlePress = () => {
    this.props.navigation.navigate('DetailsScreen');
};
return <TouchableHighlight
    onPress={handlePress}>
    <Text>Some Text</Text>
</TouchableHighlight>;
Run Code Online (Sandbox Code Playgroud)

如果您需要/想要任何进一步的信息,请告诉我。我已经在 android 上测试了代码,使用带有 Marshmallow 的 Genymotion 模拟器。

版本是:

  • 节点-v:8.9.4
  • npm -v: 5.6.0
  • react-native-cli: 2.0.1
  • 反应原生:0.54.2
  • 反应导航:1.5.2
  • 构建环境:Windows 10 64位

在这一点上,我很确定错误在我的代码中,因为TouchableHighlight在我的应用程序的其他部分正常工作,并且它可能与导航调用有关,但我无法确定,究竟是为什么。我已经确保我的应用程序中没有异常或类似的东西,因此 onPress 方法成功完成。

react-native touchablehighlight react-navigation

5
推荐指数
2
解决办法
5202
查看次数

在片段中调用 setSupportActionBar

如何setSupportActionBar用 kotlin 语言调用片段。我有一个带有导航抽屉的 mainActivity。当我点击导航抽屉的第一项时,它应该打开一个 notesFragment 。我想为 notesFragment 设置一个工具栏。当我尝试使用AppCompatActivity().setSupportActionBar(toolbar_top)该应用程序时,当我单击导航抽屉的第一项时崩溃,并出现错误

java.lang.NullPointerException:尝试在空对象引用上调用虚拟方法“android.view.Window$Callback android.view.Window.getCallback()”

class notesFragment:Fragment(){
    override fun onCreateView(inflater: LayoutInflater?, container: ViewGroup?, savedInstanceState: Bundle?): View? {

        AppCompatActivity().setSupportActionBar(toolbar_top)
        AppCompatActivity().getSupportActionBar()!!.setDisplayShowTitleEnabled(false)
        fragments()

        AppCompatActivity().getSupportActionBar()!!.setDisplayHomeAsUpEnabled(true)

        return inflater!!.inflate(R.layout.main_fragment,null)
    }

    fun fragments() {
        var tabLayout=tab
        var viewPager=viewPager
        var adapter=viewPagerAdapterMainActivity(AppCompatActivity().supportFragmentManager)
        adapter.addFragment(firstFragment(),"first")
        adapter.addFragment(secondFragment(),"second")
        adapter.addFragment(thirdFragment(),"third")

        viewPager.adapter=adapter
        tabLayout.setupWithViewPager(viewPager)
    }

}
Run Code Online (Sandbox Code Playgroud)

android kotlin

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