Ответ 1
У меня была та же проблема. Я попробовал пару вещей: проект "Очистить и перестроить".
Но, он работал после того, как я выбрал File -> Invalidate Caches / Restart
"Android Studio" показывает сообщение об ошибке "Тип параметра T имеет несовместимые верхние границы: ViewDataBinding и ActivityChecklistsBinding.
ActivityChecklistsBinding binding = DataBindingUtil.setContentView(this, R.layout.activity_checklists);
Перед обновлением ADK он работает нормально. Есть ли какие-то идеи, что неправильно?
У меня была та же проблема. Я попробовал пару вещей: проект "Очистить и перестроить".
Но, он работал после того, как я выбрал File -> Invalidate Caches / Restart
Операция привязки автоматически создается и берет имя из файла макета, а не класса активности.
Итак, если у вас есть активность с именем BeautifulActivity
и соответствующий макет с именем sweet_layout.xml
, тогда сгенерированное имя будет SweetLayoutBinding
, а не BeautifulActivityBinding
.
Не делайте мою ошибку, путайте между MainActivity
и activity_main.xml
😉
Источник Разработчики Android
Когда я впервые встречаю эту ошибку, я создаю макет с именем 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 и исчезла ошибка
добавить это в build.gradle
android{
....
dataBinding
{
enabled = true
}
...
}
Если все вышеупомянутые решения не сработали, перейдите в папку .gradle> caches и удалите все папки с именем, начинающимся с transforms, т.е. transforms-1 & transforms-2. Это работает для меня
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]
Вместо имени класса Activity вы должны использовать ActivityMainBinding.
ActivityMainBinding binding = DataBindingUtil.setContentView(this, R.layout.activity_checklists);