при реализации DataBinding получаю ошибку error: cannot find symbol
код разметки фрагмента
<layout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto">
<data>
<variable
name="viewModel"
type="com.example.goodweather.presentation.viewmodel.SignUpViewModel" />
</data>
<androidx.appcompat.widget.AppCompatButton
android:id="@+id/btnLogIn"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/log_in"
android:onClick="@{() -> viewModel.openLoginFragment()}"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/hint_for_btnLogIn" />
код ViewModel
class SignUpViewModel(private val context: Context) : ViewModel() {
fun openLoginFragment (view: View) {
view.setOnClickListener{
view.findNavController().navigate(R.id.action_signUpFragment_to_loginFragment)
}
}
код Фрагмента
class SignUpFragment : Fragment() {
override fun onCreateView(
inflater: LayoutInflater,
@Nullable container: ViewGroup?,
@Nullable savedInstanceState: Bundle?
): View? {
val binding : FragmentSignupBinding = DataBindingUtil.inflate(inflater, R.layout.fragment_signup, container, false)
return binding.root
}
ошибка
D:\1022\Android\GoodWeather\app\build\generated\source\kapt\debug\com\example\goodweather\DataBinderMapperImpl.java:9: error: cannot find symbol
import com.example.goodweather.databinding.FragmentSignupBindingImpl;
^
symbol: class FragmentSignupBindingImpl
location: package com.example.goodweather.databinding
Сгенерированный класс
import android.util.SparseArray;
import android.util.SparseIntArray;
import android.view.View;
import androidx.databinding.DataBinderMapper;
import androidx.databinding.DataBindingComponent;
import androidx.databinding.ViewDataBinding;
import com.example.goodweather.databinding.FragmentSignupBindingImpl; // здесь не видит FragmentSignupBindingImpl
import java.lang.IllegalArgumentException;
import java.lang.Integer;
import java.lang.Object;
import java.lang.Override;
import java.lang.RuntimeException;
import java.lang.String;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
public class DataBinderMapperImpl extends DataBinderMapper { // здесь говорит Class 'DataBinderMapperImpl' must either be declared abstract or implement abstract method 'getDataBinder(DataBindingComponent, View, int)' in 'DataBinderMapper'
private static final int LAYOUT_FRAGMENTSIGNUP = 1;
private static final SparseIntArray INTERNAL_LAYOUT_ID_LOOKUP = new SparseIntArray(1);
static {
INTERNAL_LAYOUT_ID_LOOKUP.put(com.example.goodweather.R.layout.fragment_signup, LAYOUT_FRAGMENTSIGNUP);
}
@Override
public ViewDataBinding getDataBinder(DataBindingComponent component, View view, int layoutId) {
int localizedLayoutId = INTERNAL_LAYOUT_ID_LOOKUP.get(layoutId);
if(localizedLayoutId > 0) {
final Object tag = view.getTag();
if(tag == null) {
throw new RuntimeException("view must have a tag");
}
switch(localizedLayoutId) {
case LAYOUT_FRAGMENTSIGNUP: {
if ("layout/fragment_signup_0".equals(tag)) {
return new FragmentSignupBindingImpl(component, view);
}
throw new IllegalArgumentException("The tag for fragment_signup is invalid. Received: " + tag);
}
}
}
return null;
}
@Override
public ViewDataBinding getDataBinder(DataBindingComponent component, View[] views, int layoutId) {
if(views == null || views.length == 0) {
return null;
}
int localizedLayoutId = INTERNAL_LAYOUT_ID_LOOKUP.get(layoutId);
if(localizedLayoutId > 0) {
final Object tag = views[0].getTag();
if(tag == null) {
throw new RuntimeException("view must have a tag");
}
switch(localizedLayoutId) {
}
}
return null;
}
@Override
public int getLayoutId(String tag) {
if (tag == null) {
return 0;
}
Integer tmpVal = InnerLayoutIdLookup.sKeys.get(tag);
return tmpVal == null ? 0 : tmpVal;
}
@Override
public String convertBrIdToString(int localId) {
String tmpVal = InnerBrLookup.sKeys.get(localId);
return tmpVal;
}
@Override
public List<DataBinderMapper> collectDependencies() {
ArrayList<DataBinderMapper> result = new ArrayList<DataBinderMapper>(1);
result.add(new androidx.databinding.library.baseAdapters.DataBinderMapperImpl());
return result;
}
private static class InnerBrLookup {
static final SparseArray<String> sKeys = new SparseArray<String>(1);
static {
sKeys.put(0, "_all");
}
}
private static class InnerLayoutIdLookup {
static final HashMap<String, Integer> sKeys = new HashMap<String, Integer>(1);
static {
sKeys.put("layout/fragment_signup_0", com.example.goodweather.R.layout.fragment_signup);
}
}
}