我正在使用Kotlin并在我的项目中添加了所有引用.
// Navigation
implementation "android.arch.navigation:navigation-common-ktx:$rootProject.nav_version"
implementation "android.arch.navigation:navigation-fragment-ktx:$rootProject.nav_version"
implementation "android.arch.navigation:navigation-runtime-ktx:$rootProject.nav_version"
implementation "android.arch.navigation:navigation-ui-ktx:$rootProject.nav_version"
Run Code Online (Sandbox Code Playgroud)
我也在build.gradle之上有这些
apply plugin: 'kotlin-android'
apply plugin: 'kotlin-android-extensions'
apply plugin: 'kotlin-kapt'
apply plugin: 'androidx.navigation.safeargs'
我在我的片段中使用它就像这样
class HomeFragment : BaseFragment(){
...
override fun onCategoryItemClicked(category: Category) {
view.findNavController()?.navigate(R.id.phrasesFragment)
}
}
Run Code Online (Sandbox Code Playgroud)
我也可以看到这个生成的扩展名(文件)
fun Fragment.findNavController(): NavController =
NavHostFragment.findNavController(this)
Run Code Online (Sandbox Code Playgroud) 我最近发现了 Material Design TexInputLayout 的一个错误以及它使 endIcon 可见的方式。
假设您已正确设置所有内容并启用了结束图标,例如:
inputLayout.endIconMode == END_ICON_CLEAR_TEXT
Run Code Online (Sandbox Code Playgroud)
问题是,如果你定义一个 focusListener 像:
inputLayout.editText?.setOnFocusChangeListener { view, hasFocus -> ...}
Run Code Online (Sandbox Code Playgroud)
并导航到其中包含此 textInputLayout 的屏幕,其中包含一些已填充的文本,如下图所示

您会注意到 endIcon 没有显示,但如果您点击它应该在的位置,它就会起作用。
即使通过使其可见来确保它应该显示也inputLayout.isEndIconVisible = 无济于事。通过调试,您可以看到您点击了public void setEndIconVisible(boolean visible)真实值,但仍然没有使图标可见。
我找到了一个解决方案,我已将其作为答案发布。
将 Gradle 版本迁移到 7.2 后,运行应用程序时出现此错误。我注意到它指向 Java 8 日期/时间功能,LocalDate. 我的项目已经coreLibraryDesugaringEnabled = true启用了。