2017-09-22 2 views
0

C'est la première fois que j'utilise la liaison de données, et à partir de Couple d'heures je suis au-dessus de l'erreur. Il y a une question suffisante liée à la même question mais pas capable de résoudre ce problème.Erreur: (7, 36) erreur: package example.com.test.databinding n'existe pas

Gradle Module APP

apply plugin: 'com.android.application' 

android { 
    compileSdkVersion 26 
    buildToolsVersion "26.0.1" 
    defaultConfig { 
     applicationId "example.com.test" 
     minSdkVersion 15 
     targetSdkVersion 26 
     versionCode 1 
     versionName "1.0" 
     testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner" 
    } 
    buildTypes { 
     release { 
      minifyEnabled false 
      proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' 
     } 
    } 

    dataBinding { 
     enabled = true 
    } 

} 

dependencies { 
    implementation fileTree(dir: 'libs', include: ['*.jar']) 
    implementation 'com.android.support:appcompat-v7:26.1.0' 
    implementation 'com.android.support.constraint:constraint-layout:1.0.2' 
    testImplementation 'junit:junit:4.12' 
    androidTestImplementation 'com.android.support.test:runner:1.0.1' 
    androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.1' 
} 

Main_xml

<?xml version="1.0" encoding="utf-8"?> 
<layout xmlns:android="http://schemas.android.com/apk/res/android"> 

    <data> 

     <variable 
      name="user" 
      type="example.com.test.MainActivity" /> 

     <import type="android.view.View" /> 

    </data> 

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

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

     <TextView 
      android:id="@+id/lastName" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:text="@{user.lastName}" /> 
    </LinearLayout> 
</layout> 

Classe Modal

public class User { 

    public final String firstName; 
    public final String lastName; 

    public User(String firstName, String lastName) { 
     this.firstName = firstName; 
     this.lastName = lastName; 
    } 

    public String getFirstName() { 
     return this.firstName; 
    } 

    public String getLastName() { 
     return this.lastName; 
    } 


} 

Activité principale

public class MainActivity extends AppCompatActivity { 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     String sMan = "Test"; 


     ActivityMainBinding activityMainBinding = DataBindingUtil.setContentView(this, R.layout.activity_main); 
     User mainActivityPresenter = new User(sMan,sMan); 
     activityMainBinding.setUser(mainActivityPresenter); 



    } 
} 

image est ajouté du journal

enter image description here

Je ne suis pas en mesure de résoudre ce issue.How peut cette question soit résolu ??

+0

Avez-vous essayé Fichier-> Invalider places payées/restart ...? –

+0

sure.many temps, mais l'erreur n'est pas résolue – seon

Répondre

0

C'est l'erreur simple et stupide que j'ai fait cette fois. Résolu avec le changement MainActivity à l'utilisateur

<data> 

    <variable 
     name="user" 
     type="example.com.test.User" /> 

    <import type="android.view.View" /> 

</data> 

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

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

    <TextView 
     android:id="@+id/lastName" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:text="@{user.lastName}" /> 
</LinearLayout> 

1

Il y a beaucoup de choses incorrectes dans votre implémentation.

  1. Votre classe de modèle doit s'étendre BaseObservable.
  2. Vos getters devraient être @Bindable
  3. Vos clients doivent appeler notifyPropertyChanged(..)
  4. Dans votre xml, vous dites que « utilisateur » est un example.com.test.MainActivity, alors que je pense qu'il est un User?
  5. User mainActivityPresenter = new User(sMan,sMan); est également très étrange. Appelez un User "utilisateur" et un Presenter "xxxPresenter". N'appelez pas un "présentateur" Utilisateur si vous voulez écrire du code clair.

... ce sont des choses que je vois d'un coup d'œil, il y en a probablement plus. S'il vous plaît lire la documentation tout d'abord, il rendra votre mise en œuvre beaucoup plus facile: https://developer.android.com/topic/libraries/data-binding/index.html

+0

ok mate sûr que je vais regarder – seon