数据绑定Android - 类型参数T具有不兼容的上限:ViewDataBinding和MainActivity [英] Data Binding Android - Type parameter T has incompatible upper bounds : ViewDataBinding and MainActivity

查看:2339
本文介绍了数据绑定Android - 类型参数T具有不兼容的上限:ViewDataBinding和MainActivity的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在使用Android Studio 2.0 Preview 4.
我正在使用Android SDK工具25 rc1。无论我清理/重建项目多少次,此错误仍然存​​在。 File-> Invalidate缓存并重新启动也不起作用。
我无法运行最基本的数据绑定示例。



build.gradle文件

 应用插件:'com.android.application'

android {
compileSdkVersion 23
buildToolsVersion23.0.2

defaultConfig {
applicationIdcom.example.chiragshenoy.myapplication
minSdkVersion 15
targetSdkVersion 23
versionCode 1
versionName1.0
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'),'proguard-rules.pro'
}
}

dataBinding {
enabled = true
}
}

依赖关系{
compile fileTree(dir: 'libs'包括:['* .jar'])
testCompile'junit:junit:4.12'
compile'c​​om.android.support:appcompat-v7:23.1.1'
编译'com.android.support:design:23.1.1'
}

MainActivity.java

  package com.example.chiragshenoy.myapplication; 

import android.databinding.DataBindingUtil;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.view.Menu;
import android.view.MenuItem;

public class MainActivity extends AppCompatActivity {

@Override
protected void onCreate(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
MainActivity binding = DataBindingUtil.setContentView(this,R.layout.activity_main);
用户user =新用户(测试,用户);
binding.setUser(user);
}

@Override
public boolean onCreateOptionsMenu(菜单菜单){
//充满菜单;如果存在,则会将项目添加到操作栏。
getMenuInflater()。inflate(R.menu.menu_main,menu);
返回true;
}

activity_main.xml

 <?xml version =1.0encoding =utf-8?> 
< layout xmlns:android =http://schemas.android.com/apk/res/android>
< data>
< variable name =usertype =com.example.chiragshenoy.myapplication.User/>
< / data>
< LinearLayout
android:orientation =vertical
android:layout_width =match_parent
android:layout_height =match_parent>
< TextView android:layout_width =wrap_content
android:layout_height =wrap_content
android:text =@ {user.firstName}/>
< TextView android:layout_width =wrap_content
android:layout_height =wrap_content
android:text =@ {user.lastName}/>
< / LinearLayout>
< / layout>

这是我的顶级build.gradle文件

  //顶级构建文件,您可以在其中添加所有子项目/模块通用的配置选项。 

buildscript {
repositories {
jcenter()
}
依赖关系{
classpath'com.android.tools.build:gradle: 2.0.0-alpha3'

//注意:请勿在此处放置应用程序依赖项;它们属于
//在单个模块中build.gradle文件
}
}

allprojects {
repositories {
jcenter()
}
}

任务清理(类型:删除){
删除rootProject.buildDir
}
/ pre>

解决方案

如果你的毕业生版本是好的(1.5+),那么你应该尝试这样:


  1. 转到你的some_layout.xml

  2. 点击右键 - > Refactor - >重命名(或SHIFT + F6) li>
  3. 将您的布局重命名为some_layout2.xml,例如

  4. 将此文件重命名为原来的some_layout.xml

这可能会解决问题。让我们知道。


I am using Android Studio 2.0 Preview 4. I'm using Android SDK tools 25 rc1. This error persists no matter how many times I clean / rebuild project. File->Invalidate Caches and restart also doesn't work. I'm not able to run the most basic example of data binding.

build.gradle file

apply plugin: 'com.android.application'

android {
    compileSdkVersion 23
    buildToolsVersion "23.0.2"

    defaultConfig {
        applicationId "com.example.chiragshenoy.myapplication"
        minSdkVersion 15
        targetSdkVersion 23
        versionCode 1
        versionName "1.0"
    }
    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }

    dataBinding {
        enabled = true
    }
}

dependencies {
    compile fileTree(dir: 'libs', include: ['*.jar'])
    testCompile 'junit:junit:4.12'
    compile 'com.android.support:appcompat-v7:23.1.1'
    compile 'com.android.support:design:23.1.1'
}

MainActivity.java

package com.example.chiragshenoy.myapplication;

import android.databinding.DataBindingUtil;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.view.Menu;
import android.view.MenuItem;

public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        MainActivity binding = DataBindingUtil.setContentView(this, R.layout.activity_main);
        User user = new User("Test", "User");
        binding.setUser(user);
    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.menu_main, menu);
        return true;
    }

activity_main.xml

<?xml version="1.0" encoding="utf-8"?>
<layout xmlns:android="http://schemas.android.com/apk/res/android">
    <data>
        <variable name="user" type="com.example.chiragshenoy.myapplication.User"/>
    </data>
    <LinearLayout
        android:orientation="vertical"
        android:layout_width="match_parent"
        android:layout_height="match_parent">
        <TextView android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="@{user.firstName}"/>
        <TextView android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="@{user.lastName}"/>
    </LinearLayout>
</layout>

this is my top level build.gradle file

// Top-level build file where you can add configuration options common to all sub-projects/modules.

buildscript {
    repositories {
        jcenter()
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:2.0.0-alpha3'

        // NOTE: Do not place your application dependencies here; they belong
        // in the individual module build.gradle files
    }
}

allprojects {
    repositories {
        jcenter()
    }
}

task clean(type: Delete) {
    delete rootProject.buildDir
}

解决方案

If your gradle version is ok (1.5+) then you should try this:

  1. Go to your "some_layout.xml"
  2. Click right -> Refactor -> Rename (or SHIFT + F6)
  3. Rename your layout to "some_layout2.xml" for example
  4. Rename this file back to the original "some_layout.xml"

This might fix the problem. Let us know.

这篇关于数据绑定Android - 类型参数T具有不兼容的上限:ViewDataBinding和MainActivity的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
相关文章
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆