java - Not able to make click event in android data binding -


view.java

package com.espresso.mvvmtestproject;  import android.content.context; import android.databinding.databindingutil; import android.support.v7.app.appcompatactivity; import android.os.bundle;  import com.espresso.mvvmtestproject.databinding.activitymainbinding;   public class view extends appcompatactivity implements viewcontract.requiredmethods{       viewmodel mmodel;     activitymainbinding binding;      @override     protected void oncreate(bundle savedinstancestate) {         super.oncreate(savedinstancestate);         //setting layout         binding = databindingutil.setcontentview(this, r.layout.activity_main);         mmodel=new viewmodel(getcontext());         binding.setuser(mmodel);         binding.sethandlers(new myhandlers());      }      @override     public void ondestroy() {         super.ondestroy();      }      @override     public context getcontext() {         return view.this;     }   } 

viewcontract.java

public interface viewcontract {     interface requiredmethods{         context getcontext();     } } 

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.espresso.mvvmtestproject.viewmodel"/>         <variable             name="handlers"             type="com.espresso.mvvmtestproject.myhandlers"/>     </data>         <linearlayout         android:orientation="vertical"         android:layout_width="match_parent"         android:layout_height="match_parent"         android:layout_gravity="center"         android:gravity="center">         <textview android:layout_width="match_parent"             android:layout_height="wrap_content"             android:textsize="20sp"             android:layout_gravity="center"             android:gravity="center"             android:textcolor="@android:color/black"             android:text="first text"/>         <textview android:layout_width="match_parent"             android:layout_height="wrap_content"             android:textsize="20sp"             android:layout_gravity="center"             android:gravity="center"             android:textcolor="@android:color/black"             android:text="second text"/>          <button             android:text="show toast"             android:layout_width="match_parent"             android:layout_height="wrap_content"             android:onclick="@{handlers::onshowtoast}"/>     </linearlayout>  </layout> 

myhandlers.java

public class myhandlers {      public void onshowtoast(view view) {         toast.maketext(view,"clicked",toast.length_short).show();     }  } 

viewmodel.java

public class viewmodel {       private context mactivity;      public viewmodel(context context) {         this.mactivity=context;     }      public void onshowtoast(view view) {         toast.maketext(mactivity,"clicked",toast.length_short).show();     }  } 

errorlog

information:gradle tasks [:app:clean, :app:generatedebugsources, :app:mockableandroidjar, :app:preparedebugunittestdependencies, :app:generatedebugandroidtestsources, :app:assembledebug] d:\projects\trp\mvvmtestproject\app\src\main\java\com\espresso\mvvmtestproject\view.java error:(8, 48) error: package com.espresso.mvvmtestproject.databinding not exist error:(15, 5) error: cannot find symbol class activitymainbinding error:execution failed task ':app:compiledebugjavawithjavac'. > java.lang.runtimeexception: found data binding errors. ****/ data binding error ****msg:listener class android.view.view.onclicklistener method onclick did not match signature of method handlers::onshowtoast file:d:\projects\trp\mvvmtestproject\app\src\main\res\layout\activity_main.xml loc:40:31 - 40:51 ****\ data binding error **** information:build failed information:total time: 4.396 secs information:3 errors information:0 warnings information:see complete output in console 

make myhandlers intereface class.

public class myhandlers {     public void onshowtoast(view view); }  

implement in activity or fragment, in case follows

public class view extends appcompatactivity implements viewcontract.requiredmethods, myhanders{      viewmodel mmodel;     activitymainbinding binding;      @override     protected void oncreate(bundle savedinstancestate) {         super.oncreate(savedinstancestate);         //setting layout         binding = databindingutil.setcontentview(this, r.layout.activity_main);         mmodel=new viewmodel(getcontext());         binding.setuser(mmodel);         binding.sethandlers(this);      }              @override     public void onshowtoast(view view) {         toast.maketext(view,"clicked",toast.length_short).show();     } } 

override interface method onshowtoast , set handler binding, , that's it, done click events


Comments

Popular posts from this blog

php - How to add and update images or image url in Volusion using Volusion API -

javascript - jQuery UI Splitter/Resizable for unlimited amount of columns -

javascript - IE9 error '$'is not defined -