出于某种原因,以下代码正常编译:
public double getSomeDouble() {
return "" != null ? 3.7d : null;
}
Run Code Online (Sandbox Code Playgroud)
我通常希望Eclipse将其标记为错误(null不能转换为double原语).
只是为了支持我的假设,这段代码不起作用:
public double getSomeDouble() {
return null;
}
Run Code Online (Sandbox Code Playgroud)
Eclipse会将该return null行标记为错误,说明:
类型不匹配:无法转换
null为double
为什么它在前面的代码片段中没有说同样的东西?!
最近我开始使用android的支持库IntDef/StringDef(Typedef Annotations).我按照Android工具项目网站中的文档进行操作,无法找到或在任何其他相关教程中如何使用带有泛型数组的IntDef/StringDef typedef注释.例如,假设我有以下代码片段:
public static final String MEDIA_IMAGE = "image";
public static final String MEDIA_TEXT = "text";
public static final String MEDIA_LINK = "link";
public static final String MEDIA_AUDIO = "audio";
public static final String MEDIA_VIDEO = "video";
public static final String MEDIA_VOICE = "voice";
@StringDef ({MEDIA_IMAGE, MEDIA_TEXT, MEDIA_LINK, MEDIA_AUDIO, MEDIA_VIDEO, MEDIA_VOICE})
@Retention(RetentionPolicy.SOURCE)
public @interface Media {}
Run Code Online (Sandbox Code Playgroud)
我想使用泛型数组和typedef注释做类似的事情:
public List<@Media String> getMediaItems() {
...
}
public void setMediaItems(List<@Media String> mediaItems) {
...
}
Run Code Online (Sandbox Code Playgroud)
然而,这似乎是不可能的..因为编译器说:
"此语言级别不支持类型注释"
有什么建议?
最近我将我的android项目从Eclipse迁移到了Android Studio.目前我的项目具有以下Gradle脚本结构:
我的主gradle构建文件的内容:
// Top-level build file where you can add configuration options common to all sub-projects/modules.
buildscript {
repositories {
mavenCentral()
maven { url 'http://download.crashlytics.com/maven' }
}
dependencies {
classpath 'com.android.tools.build:gradle:1.2.1'
classpath 'com.crashlytics.tools.gradle:crashlytics-gradle:1.+'
// NOTE: Do not place your application dependencies here; they belong
// in the individual module build.gradle files
}
}
allprojects {
repositories {
maven { url "http://dl.bintray.com/populov/maven" }
mavenCentral()
}
}
Run Code Online (Sandbox Code Playgroud)
我想确保整个项目都有崩解剂.我最初尝试添加
apply plugin: 'crashlytics'
Run Code Online (Sandbox Code Playgroud)
到主项目gradle文件,但我遇到以下错误:
错误:(2,0)Crashlytics应用于没有Android插件的项目.请确保在适合您项目的Android插件之后应用Crashlytics插件.
然后我移动apply plugin: …
我在清单文件中为我的Android应用程序定义了一个深层链接:
<activity android:name="com.example.DeeplinkActivity"
android:screenOrientation="portrait"
android:theme="@style/MyBaseTheme.NoActionBar">
<intent-filter>
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.BROWSABLE" />
<category android:name="android.intent.category.DEFAULT" />
<!-- Accepts URIs that begin with "example://shelf” -->
<!-- Currently handles Ads deeplink structure (iPhone structure) -->
<data
android:host="shelf"
android:pathPrefix=""
android:scheme="example" />
<!-- Accepts URIs that begin with "example://com” -->
<data
android:host="com"
android:pathPrefix=""
android:scheme="example" />
<!-- Accepts URIs that begin with http://www.example.com/some/sample/page.htm” -->
<data
android:host="www.example.com"
android:pathPrefix="/some/sample/page.htm"
android:scheme="http" />
</intent-filter>
</activity>
Run Code Online (Sandbox Code Playgroud)
我的应用程序中的一些链接看起来很相似,但不应被视为深层链接.它们以http://www.example.com开头,但它们具有完全不同的前缀.例如:http://www.example.com/other/not/deep/link.htm.
出于某种原因,即使使用前缀"/some/sample/page.htm"定义了为DeeplinkActivity定义的intent过滤器也是如此.
前缀是否被忽略?如果不是为什么在定义deeplink intent过滤器时应该使用pathPrefix属性?
我正在使用 gson 解析器(最新版本 - > 2.8.2)。
我想使用RuntimeTypeAdapterFactory它是 gson extras 的一部分。
在我build.gradle目前有一个单一的编译指令:
compile 'com.google.code.gson:gson:2.8.2'
Run Code Online (Sandbox Code Playgroud)
但是,这仅给了我没有额外内容的 gson 库(项目中无法识别 RuntimeTypeAdapterFactory ......)。
我查看了 gson extras 的 pom 文件(https://github.com/google/gson/blob/master/extras/pom.xml)并尝试将以下行添加到我的构建 gradle 中:
compile 'com.google.code.gson:gson-extras:2.8.2'
Run Code Online (Sandbox Code Playgroud)
但是 gradle 只是不会编译 gson 附加项:
"Error:Failed to resolve: com.google.code.gson:gson-extras:2.8.2"
Run Code Online (Sandbox Code Playgroud)
任何想法如何使这项工作?
非常感谢您在这件事上的时间和帮助。
材料设计的通知操作(按钮)中的图标大小应该是多少?我正在寻找完整的图标大小(图标边界/光学边界).
我遇到了一个非常相似的问题:
但那是在材料设计时代之前.最重要的是,所选答案是不完整的,因为它没有为每个设备密度指定图标大小(图标边界/光学边界).
在我的应用程序中,我有一个链接.点击链接后,我想将用户发送到Google Play并自动更新应用.
我试过这个:
// package name from menifest: com.infibond.infi
public void installInfiApplication(View view){
final String apkurl = "market://details?id=" + "com.infibond.infi";
final Uri marketUri = Uri.parse(apkurl);
Intent promptInstall = new Intent(Intent.ACTION_VIEW).setData(marketUri);
startActivity(promptInstall);
}
Run Code Online (Sandbox Code Playgroud)
但这会将用户发送到商店而不更新应用程序.
有办法吗?如果是,那么它是什么?
android ×6
java ×2
annotations ×1
build.gradle ×1
compilation ×1
crashlytics ×1
deep-linking ×1
eclipse ×1
expression ×1
generics ×1
google-play ×1
gradle ×1
gson ×1
intentfilter ×1
maven ×1
plugins ×1
uri ×1