为了维护我的 gradle 依赖项的版本号,我选择了以下模式。
在我的项目级别中,build.gradle我添加了:
ext.versions = [
'kotlin_version' : '1.2.30',
'dagger' : '2.16'
]
Run Code Online (Sandbox Code Playgroud)
在我的应用程序模块中,build.gradle我添加了:
implementation "com.google.dagger:dagger:${versions.dagger}"
implementation "com.google.dagger:dagger-android-support:${versions.dagger}"
implementation "com.google.dagger:dagger-android:${versions.dagger}"
kapt "com.google.dagger:dagger-compiler:${versions.dagger}"
kapt "com.google.dagger:dagger-android-processor:${versions.dagger}"
Run Code Online (Sandbox Code Playgroud)
但我的问题是在执行此操作后,我丢失了“可用的较新库版本”的 lint 警告。
在不丢失 lint 检查的情况下执行此操作的正确方法是什么?
注意:我还尝试了其他方法,例如将这些版本移动到 gradle.properties 文件(用于全局变量)。
我正在 Android Studio 中寻找解决方案。我已经找到了一种解决方案:
Analyze -> Run Inspection by name... -> Type "Newer Library Versions Available"
但我担心的是,在我们运行某些或其他脚本之前很容易错过更新。这就是为什么我试图找到一种方法,可以将依赖项版本放入变量中并获得新更新的 lint 警告。
我在android中使用DownloadManager API成功下载了一个pdf文件.
正确设置清单权限.文件下载正确.
但当试图打开它时说"无法打开文件".
请帮忙打开下载的文件.我想我没有为文件设置正确的名称和扩展名.怎么设置呢?
private void DownloadBook(String url, String title){
DownloadManager.Request request = new DownloadManager.Request(Uri.parse(url));
//request.setDescription("Some descrition");
String tempTitle = title.replace(" ","_");
request.setTitle(tempTitle);
// in order for this if to run, you must use the android 3.2 to compile your app
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB) {
request.allowScanningByMediaScanner();
request.setNotificationVisibility(DownloadManager.Request.VISIBILITY_VISIBLE_NOTIFY_COMPLETED);
}
request.setDestinationInExternalPublicDir(Environment.DIRECTORY_DOWNLOADS, tempTitle+".pdf");
// get download service and enqueue file
DownloadManager manager = (DownloadManager) getSystemService(Context.DOWNLOAD_SERVICE);
request.setMimeType(".pdf");
request.allowScanningByMediaScanner();
request.setAllowedNetworkTypes(DownloadManager.Request.NETWORK_MOBILE | DownloadManager.Request.NETWORK_WIFI);
manager.enqueue(request);
}
Run Code Online (Sandbox Code Playgroud) 即使在设置了enter,exit,popEnter和popExit过渡后,转换也不起作用.
<fragment
android:id="@+id/introFragment"
android:name="IntroFragment"
android:label="IntroFragment" >
<action
android:id="@+id/action_introFragment_to_signinFragment"
app:destination="@id/signinFragment"
app:enterAnim="@anim/slide_from_right"
app:exitAnim="@anim/slide_to_left"
app:popEnterAnim="@anim/slide_from_left"
app:popExitAnim="@anim/slide_to_right"
app:popUpTo="@+id/nav_graph" />
<action
android:id="@+id/action_introFragment_to_signupFragment"
app:destination="@id/signupFragment"
app:enterAnim="@anim/slide_from_right"
app:exitAnim="@anim/slide_to_left"
app:popEnterAnim="@anim/slide_from_left"
app:popExitAnim="@anim/slide_to_right"
app:popUpTo="@+id/nav_graph" />
</fragment>
Run Code Online (Sandbox Code Playgroud)
我在用
def nav_version = "1.0.0-alpha05"
// Navigation Component - Jetpack
implementation "android.arch.navigation:navigation-fragment-ktx:$nav_version"
implementation "android.arch.navigation:navigation-ui-ktx:$nav_version"
androidTestImplementation "android.arch.navigation:navigation-testing-ktx:$nav_version"
Run Code Online (Sandbox Code Playgroud)
我的导航代码是
button.setOnClickListener(
Navigation.createNavigateOnClickListener(R.id.signinFragment))
Run Code Online (Sandbox Code Playgroud)
我错过了什么?
我正在尝试创建一个带有可滚动列表的页面。功能将是一个普通列表,可通过单击删除项目。该列表中的项目数量受到用户的限制和动态添加。您可以考虑以待办事项列表为例。现在哪个是更好的实施方法?数据绑定到其适配器的回收器视图?或者在运行时添加为子项的正常线性布局?
我目前的实现是回收者视图。但是,我发现它滞后并且动画效果不佳。因此,线性布局是通过指定 xml 自动动画的——通过将动画布局更改设置为 true。
仅供参考的数据是本地的并在后台同步。