2015-09-28 34 views
6

我試圖在android studio中使用測試功能(數據綁定)。在遵循android studio的指導之後,我可以在android studio中找到相關的類DataBindingInfo。但是在創建項目後,數據綁定類不會生成。有人可以幫忙嗎?Android數據綁定:無法解析符號

的build.gradle的應用模塊

apply plugin: 'com.android.application' 

apply plugin: 'com.android.databinding' 
android { 
    compileSdkVersion 23 
    buildToolsVersion "23.0.1" 

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

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

的build.gradle該項目

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

buildscript { 
    repositories { 
     jcenter() 
    } 
    dependencies { 
     dependencies { 
      classpath "com.android.tools.build:gradle:1.3.0" 
      classpath "com.android.databinding:dataBinder:1.0-rc1" 
     } 
     // NOTE: Do not place your application dependencies here; they belong 
     // in the individual module build.gradle files 
    } 
} 

allprojects { 
    repositories { 
     jcenter() 
    } 
} 

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.pigfamily.myapplication.User" /> 
    </data> 

    <LinearLayout 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
> 

     <TextView 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:text="@{user.name}" /> 

    </LinearLayout> 
</layout> 

MainActivity.java

package com.example.pigfamily.myapplication; 

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

public class MainActivity extends AppCompatActivity { 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 
     ActivityMainBinding //cannot resolve the symbol here 
    } 

    @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; 
    } 

    @Override 
    public boolean onOptionsItemSelected(MenuItem item) { 
     // Handle action bar item clicks here. The action bar will 
     // automatically handle clicks on the Home/Up button, so long 
     // as you specify a parent activity in AndroidManifest.xml. 
     int id = item.getItemId(); 

     //noinspection SimplifiableIfStatement 
     if (id == R.id.action_settings) { 
      return true; 
     } 

     return super.onOptionsItemSelected(item); 
    } 
} 
+0

我用同樣的和工作對我來說使數據綁定。請同步你的gradle版本 – USKMobility

+0

是的,你是對的。它現在有效 –

+0

僅供參考,rc2可用於幾個錯誤修復和支持依賴注入。 –

回答

10

我有同樣的問題。我正在挖掘gradle設置,清理,重建......沒有任何工作。最後,所有我需要做的就是重新啓動Android Studio中

https://www.bignerdranch.com/blog/descent-into-databinding/

在撰寫本文時,這種整合需要一點跳躍開始得到 去。要在添加 標記後使ListItemCrimeBinding可用,您必須重新啓動Android Studio,然後重建 項目。

0

如果彈出對話框,點擊保存旁邊的同步按鈕或​​重新啓動Android Studio,請點擊同步。

9

首先,在你的build.gradle文件

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

+1

這對我有效,這是正確的答案。 – Oussaki

+0

完成此操作後,您需要轉到:文件 - 使用Gradle文件同步項目以同步gradle文件。 –