Подтвердить что ты не робот

DataBindingUtil.setContentView - параметр типа T имеет несовместимые верхние границы

"Android Studio" показывает сообщение об ошибке "Тип параметра T имеет несовместимые верхние границы: ViewDataBinding и ActivityChecklistsBinding.

ActivityChecklistsBinding binding = DataBindingUtil.setContentView(this, R.layout.activity_checklists);

Перед обновлением ADK он работает нормально. Есть ли какие-то идеи, что неправильно?

4b9b3361

Ответ 1

У меня была та же проблема. Я попробовал пару вещей: проект "Очистить и перестроить".

Но, он работал после того, как я выбрал File -> Invalidate Caches / Restart

Ответ 2

Операция привязки автоматически создается и берет имя из файла макета, а не класса активности.

Итак, если у вас есть активность с именем BeautifulActivity и соответствующий макет с именем sweet_layout.xml, тогда сгенерированное имя будет SweetLayoutBinding, а не BeautifulActivityBinding.

Не делайте мою ошибку, путайте между MainActivity и activity_main.xml 😉

Источник Разработчики Android

Ответ 3

Когда я впервые встречаю эту ошибку, я создаю макет с именем a.xml, а затем создаю действие вроде этого

public class ABinding extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        ABinding binding = DataBindingUtil.setContentView(this, R.layout.a);
    }

}

и эта ошибка возникает. Наконец, я узнал, что Class ABinding автоматически генерируется в /build, поэтому активность с именем ABinding будет перезаписывать автоматически сгенерированный класс

поэтому я переименую Activity и исчезла ошибка

Ответ 4

добавить это в build.gradle

   android{
 ....
    dataBinding 
      { 
     enabled = true
       }
...
    }

Ответ 5

Если все вышеупомянутые решения не сработали, перейдите в папку .gradle> caches и удалите все папки с именем, начинающимся с transforms, т.е. transforms-1 & transforms-2. Это работает для меня

Ответ 6

Try This Work for sure...

  Step 1: Add this code in the build.gradle(Mobile:app)
           dataBinding {
                enabled = true
            }

        Example:
         buildTypes {
                release {
                    minifyEnabled false
                    proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
                }
            }

            **dataBinding {
                enabled = true
            }**
        }

        dependencies {
        implementation fileTree(dir: 'libs', include: ['*.jar'])
            implementation 'com.android.support:appcompat-v7:28.0.0'
            implementation 'com.android.support.constraint:constraint-layout:1.1.3'
            testImplementation 'junit:junit:4.12'
        .....
        }

        Step 2:
        Binding Can be done with Name of the .xml file as below example..
        Simply name of the xml file and prefix with binding...

        Example 1:
        if of your .xml file is activity_main.xml then Binding file should be MainActivityBinding
        Example 2:
        if of your .xml file is android_sunil.xml then Binding file should be AndroidSunilBinding

    Step 3: Sample Code:

    public class BaseObservableActivity extends AppCompatActivity {

            private ActivityBaseobservableBinding activityMainBinding;
        @Override
        protected void onCreate(@Nullable Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            activityMainBinding = DataBindingUtil.setContentView(this, R.layout.activity_baseobservable);

        }
    }

In the above code my .xml file name is activity_baseobservable so my binding class should be ActivityBaseobservableBinding activityMainBinding


--Happy Android [email protected]

Ответ 7

Вместо имени класса Activity вы должны использовать ActivityMainBinding.

ActivityMainBinding binding = DataBindingUtil.setContentView(this, R.layout.activity_checklists);