小编nha*_*man的帖子

使用密封类强制编译错误

使用密封类,您可以使用详尽的when表达式,并else在表达式返回结果时省略该子句:

sealed class SealedClass {
  class First : SealedClass()
  class Second : SealedClass()
}

fun test(sealedClass: SealedClass) : String =
    when (sealedClass) {
      is SealedClass.First -> "First"
      is SealedClass.Second -> "Second"
    }
Run Code Online (Sandbox Code Playgroud)

现在,如果我是一个补充ThirdSealedClass,编译器会抱怨说,when在表达test()并不详尽,我需要添加一个子句Thirdelse.

我想知道,如果test()不返回任何内容,是否也可以强制执行此检查:

fun test(sealedClass: SealedClass) {
    when (sealedClass) {
      is SealedClass.First -> doSomething()
      is SealedClass.Second -> doSomethingElse()
    }
}
Run Code Online (Sandbox Code Playgroud)

如果Third添加,此代码段不会中断.我return之前可以添加一个语句when,但这很容易被遗忘,如果其中一个子句的返回类型不是,则可能会中断Unit.

我如何确保不忘记在我的when …

kotlin

37
推荐指数
4
解决办法
2248
查看次数

模仿Nexus 7

我想模仿Nexus 7,但我无法弄清楚要使用什么值.
皮肤:内置或自定义分辨率?我应该使用哪些硬件属性?

android android-emulator

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

在透明的ActionBar中部分显示ImageView

Google地图应用程序具有透明的ActionBar,通过该ActionBar可以看到地图.

在此输入图像描述

我可以使用以下方法设置ActionBar的透明度:

<style name="Theme.MyTheme" parent="android:style/Theme.Holo.Light">
    <item name="android:actionBarStyle">@style/ActionBar</item>
</style>

<style name="ActionBar" parent="@android:style/Widget.Holo.ActionBar">
    <item name="android:background">#64000000</item>
</style>
Run Code Online (Sandbox Code Playgroud)

但是如何在ActionBar后面显示我的ImageView?

android actionbarsherlock

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

JaCoCo使用Kotlin和Android 3.0返回0%的覆盖率

我正在尝试检查我在Kotlin中编写的测试用例的代码覆盖率.当我执行时./gradlew createDebugCoverageReport --info,我的coverage.ec文件为空,我的报告显示我有0%的覆盖率.请注意,测试用例100%成功.谁能想到我的coverage.ec文件一直返回0字节的原因?

我到处搜寻都没有运气.

apply plugin: 'com.android.library'

apply plugin: 'kotlin-android'

apply plugin: 'kotlin-android-extensions'

apply plugin: 'jacoco'


android {
    compileSdkVersion 25
    buildToolsVersion "25.0.3"
    defaultConfig {
        minSdkVersion 16
        targetSdkVersion 25
        versionCode 1
        versionName "1.0"
        testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
    }

    buildTypes {
        debug {
            testCoverageEnabled = true
        }
        release {
            minifyEnabled false
            testCoverageEnabled = true
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }


    testOptions {
        unitTests.all {
            jacoco {
                includeNoLocationClasses = true
            }
        }
    }

}

dependencies {
    implementation fileTree(include: ['*.jar'], dir: 'libs')
    androidTestImplementation('com.android.support.test.espresso:espresso-core:2.2.2', {
        exclude …
Run Code Online (Sandbox Code Playgroud)

android code-coverage jacoco kotlin

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

SimpleDateFormat 24h

我有一个SimpleDateFormat解析String成一个Date:

SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd'T'hh:mm:ssZ");
Run Code Online (Sandbox Code Playgroud)

当我解析这个时:

format.parse("2011-08-29T12:44:00+0200");
Run Code Online (Sandbox Code Playgroud)

使用时的结果是Date.toLocaleString:

29年8月 2011 00:44:00

这应该是当然的:

29年8月 2011 12:44:00

当我解析这个时:

format.parse("2011-08-29T13:44:00+0200");
Run Code Online (Sandbox Code Playgroud)

然后结果如预期:

29年8月 2011 13:44:00

我怎样才能解决这个问题?

java android simpledateformat

32
推荐指数
1
解决办法
4万
查看次数

使用Kotlin组合整数标志的最佳方法?

在java中,我们经常通过|组合标志 运营商.

例如

getWindow().getDecorView().setSystemUiVisibility(
  View.SYSTEM_UI_FLAG_LAYOUT_STABLE | 
  View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION | 
  View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN
);
Run Code Online (Sandbox Code Playgroud)

我似乎无法找到Kotlin中的等效运算符.有人知道在Kotlin中组合整数标志的便捷方法吗?

android kotlin

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

SQLite添加列,保留数据

我有一个包含4列的数据库:

@Override
public void onCreate(SQLiteDatabase database) {
        database.execSQL("CREATE TABLE " + DATABASENAME + " (name TEXT, latitude REAL, longitude REAL, country TEXT);");
}
Run Code Online (Sandbox Code Playgroud)

现在我想添加另一列,但保留已存在于数据库中的行.我该怎么做?我找不到任何有用的参考资料.

@Override
public void onUpgrade(SQLiteDatabase db, int arg1, int arg2) {
    //What to do here?
}
Run Code Online (Sandbox Code Playgroud)

编辑

我已将onCreate修改为:

@Override
public void onCreate(SQLiteDatabase database) {
    database.execSQL("CREATE TABLE " + DATABASENAME + " (name TEXT, latitude REAL, longitude REAL, country TEXT, code TEXT);");
}
Run Code Online (Sandbox Code Playgroud)

和我的onUpgrade:

@Override
public void onUpgrade(SQLiteDatabase db, int arg1, int arg2) {
    Logger.log("Updating userstations database from …
Run Code Online (Sandbox Code Playgroud)

sqlite android

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

动画视图滑出另一个视图,将视图推到下面

我有一个按钮列表.当我按下按钮时,视图应该向下滑动按钮,如下所示:

开始:
在此输入图像描述

半:
在此输入图像描述

结束:
在此输入图像描述

我该怎么做?应该滑出的视图比按钮大,因此首先隐藏按钮后面的View然后向下滑动会导致视图在按钮上方可见.这不应该发生.

有关如何处理此问题的任何想法或示例?

android android-animation

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

在DialogActivity中使用时,MapFragment会获得深色叠加

我试图表现出MapFragmentAndroid Maps v2 APIActivity@android:style/Theme.DeviceDefault.Light.Dialog.NoActionBar主题.这很好用.但是,地图会出现黑暗叠加层:

对话

当我将主题更改为时@android:style/Theme.DeviceDefault.Light.NoActionBar,地图显示为应该:

正常

这是我的xml布局文件:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical" >

    <fragment
        android:id="@+id/mapfragment"
        android:layout_width="match_parent"
        android:layout_height="0dp"
        android:layout_weight="1"
        class="com.google.android.gms.maps.MapFragment" />

    <TextView
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="HELLO"
        android:textSize="@dimen/textsize_large" />

</LinearLayout>
Run Code Online (Sandbox Code Playgroud)

这里发生了什么?

android android-maps-v2

24
推荐指数
2
解决办法
3715
查看次数

关于实际的推理

我正在尝试将OpenJML与Z3结合使用,而我正试图推理doublefloat重视:

class Test {

  //@ requires b > 0;
  void a(double b) {
  }

  void b() {
    a(2.4);
  }
}
Run Code Online (Sandbox Code Playgroud)

我已经发现OpenJML AUFLIA用作默认逻辑,不支持reals.我现在正在使用AUFNIRA.

不幸的是,该工具无法证明此类:

? java -jar openjml.jar -esc -prover z3_4_3 -exec ./z3 Test.java -noInternalSpecs -logic AUFNIRA

Test.java:8: warning: The prover cannot establish an assertion (Precondition: Test.java:3: ) in method b
    a(2.4);
     ^
Test.java:3: warning: Associated declaration: Test.java:8: 
  //@ requires b > 0;
      ^
2 warnings
Run Code Online (Sandbox Code Playgroud)

为什么是这样?

java z3 openjml

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