Я разрабатываю новую версию приложения для Android, которая была опубликована на рынке некоторыми предыдущими разработчиками с именем пакета, например com.mycompany.MyApp, и мне нужно использовать то же имя пакета.
В моем проекте я использовал Библиотеку привязки данных, для которой нужны имена в нижнем регистре, и я получаю "java.lang.IllegalArgumentException: не могу сделать предположение для com.mycompany.MyApp.databinding.MyFragmentRecyclerViewItemBinding"
И затем, согласно официальной документации, а также некоторым записям в SO, я поместил определение
<data class="com.mycompany.MyApp.databinding.MyFragmentRecyclerViewItemBinding" ></data>
поверх макета в my_fragment_recycler_view_item.xml
Теперь я могу импортировать классMyFragmentRecyclerViewItemBinding в MyRecyclerViewFragment.kt и доступ к элементам представления и т. Д., Но проект не может быть скомпилирован, поскольку автоматически сгенерированный класс MyFragmentRecyclerViewItemBindingImpl не может быть скомпилирован.
Gradle выдает «java.lang.IllegalArgumentException: не может сделать предположение для com.mycompany.MyApp.databinding.MyFragmentRecyclerViewItemBindingImpl», и я вижу ошибку в классе MyFragmentRecyclerViewItemBindingImpl как «Не могу наследовать от final». mycompany.MyApp.MyFragmentRecyclerViewItemBinding '"
Я полагаю, это потому, что в Kotlin все классы являются окончательными по умолчанию, но я все равно застрял здесь. Можете ли вы что-нибудь предложить или вы видите, что я делаю неправильно?
Заранее благодарим за все прочтения, комментарии и ответы. Я не могу поделиться кодом напрямую, но символьные коды похожи на следующее:
MyRecyclerViewFragment.kt
import com.mycompany.MyApp.databinding.MyFragmentRecyclerViewItemBinding
class MyRecyclerViewFragment: Fragment()
{
override fun onCreateView(
inflater: LayoutInflater,
container: ViewGroup?,
savedInstanceState: Bundle?
): View? {
val fragmentIntroSlidePage = MyFragmentRecyclerViewItemBinding.inflate(inflater,
container, false)
//TODO ..
return fragmentIntroSlidePage.root
}
}
my_fragment_recycler_view_item.xml
<layout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto">
<data class="com.mycompany.MyApp.databinding.MyFragmentRecyclerViewItemBinding">
</data>
<androidx.constraintlayout.widget.ConstraintLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@color/myBgColor"
android:orientation="vertical">
<ImageView
android:id="@+id/slide_bg_view"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:contentDescription="@string/intro_slide_1_text"
android:scaleType="fitXY"
android:src="@drawable/intro_slide_01"
app:layout_constraintHeight_min="150dp"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintTop_toTopOf="parent" />
</androidx.constraintlayout.widget.ConstraintLayout>
</layout>
автоматически сгенерированный класс
package com.mycompany.MyApp.databinding;
public class MyFragmentRecyclerViewItemBindingImpl extends MyFragmentRecyclerViewItemBinding {
...