AClass.class.getName();
если AClass - это класс java, этот метод возвращает имя пакета и имя класса. но когда я конвертирую файл Java в файл Kotlin, он возвращает только имя класса. поэтому система не может найти этот путь класса
код выше
AClass.class.getName();
если AClass - это класс java, этот метод возвращает имя пакета и имя класса. но когда я конвертирую файл Java в файл Kotlin, он возвращает только имя класса. поэтому система не может найти этот путь класса
код выше
Есть много способов, чтобы получить полное квалифицированное имя Java Class
в Котлин:
получить имя через свойство KClass.qualifiedName
:
val name = AClass::class.qualifiedName;
ИЛИ получить имя через свойство Class.name
:
val name = AClass::class.java.name;
ИЛИ получить имя через метод Class#getName
:
val name = AClass::class.java.getName();
таблицу квалифицированного имени класса, как показано ниже:
|-----------------------|-----------------------|-----------------------|
| | Class | Anonymous Class |
|-----------------------|-----------------------|-----------------------|
| KClass.qualifiedName | foo.bar.AClass | null |
|-----------------------|-----------------------|-----------------------|
| Class.name | foo.bar.AClass | foo.bar.AClass$1 |
|-----------------------|-----------------------|-----------------------|
| Class.getName() | foo.bar.AClass | foo.bar.AClass$1 |
|-----------------------|-----------------------|-----------------------|
Попробуйте ниже решение :: -
var name = MainActivity::class.java.canonicalName as String
Если это фрагмент java
var fragmentSimpleName = FragmentName::class.java.simpleName as String
Это то, что я использую, чтобы получить имя класса.
val TAG = javaClass.simpleName
Для разработчиков Android очень полезно объявить в качестве поля и вызвать для печати журналов.
Возможно, я немного опоздал на вечеринку, но я делаю это с использованием хеш-кода нового экземпляра фрагмента. Это Int, поэтому позволяет проводить все виды тестов.
private val areaFragment by lazy { Area_Fragment.newInstance() }
var fragmentHashCode = fragment.hashCode()
when (fragmentHashCode) {
areaFragment.hashCode() -> {
myNavigationView.setCheckedItem(R.id.nav_area)
}