Android DataBinding error. Could not find accessor
up vote
12
down vote
favorite
I'm getting the following error when I try to run my app:
Error:Execution failed for task ':app:compileDevelopmentDebugJavaWithJavac'.
> java.lang.RuntimeException: Found data binding errors.
****/ data binding error ****msg:Could not find accessor java.lang.String.giftRecipientName redacted.xml loc:182:63 - 182:93 **** data binding error ****
I have an Order object which looks like this:
public class Order {
public Address address;
// unrelated fields and methods
}
The nested Address object looks like this:
public class Address {
public String addressLine1;
public String addressLine2;
public String giftRecipientName;
public Boolean isGift;
}
In my .xml I am doing the following:
<layout xmlns:android="http://schemas.android.com/apk/res/android">
<data>
<variable name="order" type="example.redacted.models.Order"/>
</data>
// widgets and whatnot
<TextView
android:id="@+id/gift_recipientTV"
android:layout_column="1"
android:layout_weight="1"
android:layout_width="0dp"
android:textStyle="bold"
android:gravity="right"
android:text='@{order.address.isGift ? order.address.giftRecipientName : "" }'/>
Lastly in my fragment:
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
RedactedBinding dataBinding = DataBindingUtil.inflate(inflater, R.layout.redacted, container, false);
dataBinding.setOrder(_order);
return dataBinding.getRoot();
}
android data-binding android-databinding
add a comment |
up vote
12
down vote
favorite
I'm getting the following error when I try to run my app:
Error:Execution failed for task ':app:compileDevelopmentDebugJavaWithJavac'.
> java.lang.RuntimeException: Found data binding errors.
****/ data binding error ****msg:Could not find accessor java.lang.String.giftRecipientName redacted.xml loc:182:63 - 182:93 **** data binding error ****
I have an Order object which looks like this:
public class Order {
public Address address;
// unrelated fields and methods
}
The nested Address object looks like this:
public class Address {
public String addressLine1;
public String addressLine2;
public String giftRecipientName;
public Boolean isGift;
}
In my .xml I am doing the following:
<layout xmlns:android="http://schemas.android.com/apk/res/android">
<data>
<variable name="order" type="example.redacted.models.Order"/>
</data>
// widgets and whatnot
<TextView
android:id="@+id/gift_recipientTV"
android:layout_column="1"
android:layout_weight="1"
android:layout_width="0dp"
android:textStyle="bold"
android:gravity="right"
android:text='@{order.address.isGift ? order.address.giftRecipientName : "" }'/>
Lastly in my fragment:
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
RedactedBinding dataBinding = DataBindingUtil.inflate(inflater, R.layout.redacted, container, false);
dataBinding.setOrder(_order);
return dataBinding.getRoot();
}
android data-binding android-databinding
add a comment |
up vote
12
down vote
favorite
up vote
12
down vote
favorite
I'm getting the following error when I try to run my app:
Error:Execution failed for task ':app:compileDevelopmentDebugJavaWithJavac'.
> java.lang.RuntimeException: Found data binding errors.
****/ data binding error ****msg:Could not find accessor java.lang.String.giftRecipientName redacted.xml loc:182:63 - 182:93 **** data binding error ****
I have an Order object which looks like this:
public class Order {
public Address address;
// unrelated fields and methods
}
The nested Address object looks like this:
public class Address {
public String addressLine1;
public String addressLine2;
public String giftRecipientName;
public Boolean isGift;
}
In my .xml I am doing the following:
<layout xmlns:android="http://schemas.android.com/apk/res/android">
<data>
<variable name="order" type="example.redacted.models.Order"/>
</data>
// widgets and whatnot
<TextView
android:id="@+id/gift_recipientTV"
android:layout_column="1"
android:layout_weight="1"
android:layout_width="0dp"
android:textStyle="bold"
android:gravity="right"
android:text='@{order.address.isGift ? order.address.giftRecipientName : "" }'/>
Lastly in my fragment:
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
RedactedBinding dataBinding = DataBindingUtil.inflate(inflater, R.layout.redacted, container, false);
dataBinding.setOrder(_order);
return dataBinding.getRoot();
}
android data-binding android-databinding
I'm getting the following error when I try to run my app:
Error:Execution failed for task ':app:compileDevelopmentDebugJavaWithJavac'.
> java.lang.RuntimeException: Found data binding errors.
****/ data binding error ****msg:Could not find accessor java.lang.String.giftRecipientName redacted.xml loc:182:63 - 182:93 **** data binding error ****
I have an Order object which looks like this:
public class Order {
public Address address;
// unrelated fields and methods
}
The nested Address object looks like this:
public class Address {
public String addressLine1;
public String addressLine2;
public String giftRecipientName;
public Boolean isGift;
}
In my .xml I am doing the following:
<layout xmlns:android="http://schemas.android.com/apk/res/android">
<data>
<variable name="order" type="example.redacted.models.Order"/>
</data>
// widgets and whatnot
<TextView
android:id="@+id/gift_recipientTV"
android:layout_column="1"
android:layout_weight="1"
android:layout_width="0dp"
android:textStyle="bold"
android:gravity="right"
android:text='@{order.address.isGift ? order.address.giftRecipientName : "" }'/>
Lastly in my fragment:
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
RedactedBinding dataBinding = DataBindingUtil.inflate(inflater, R.layout.redacted, container, false);
dataBinding.setOrder(_order);
return dataBinding.getRoot();
}
android data-binding android-databinding
android data-binding android-databinding
asked Sep 20 '15 at 19:04
MidasLefko
3,04312138
3,04312138
add a comment |
add a comment |
4 Answers
4
active
oldest
votes
up vote
17
down vote
accepted
After hours of trial and error it seems that Android data-binding looks for getters before it looks at public fields. My Order object had a helper method called getAddress
public class Order {
public Address address;
public String getAddress() {
return address.addressLine1 + address.addressLine2;
}
}
The binder was calling that method instead of accessing the public Address field. I put the getAddress method inside the Address object (where it probably should have been to begin with) and the app compiled.
add a comment |
up vote
1
down vote
Android DataBinding error. Could not find accessor
- As this error tells, binding needs
accessor
orgetter
to work and alsosetter
if you use two way binding. - So always put
getter
&setter
in your model class.
add a comment |
up vote
1
down vote
In my case, My ViewModel
has a variable name starting with m and it was creating a problem
public class MyViewModel extends ViewModel {
private LiveData<SomeClass> mTask; //Chaning the variable name to task and it's getter name to getTask worked for me
//...code left for brevity
public LiveData<SomeClass> getmTask() {
return mTask;
}
}
I changed the variable name mTask
to task
and it's getter name getmTask
to getTask
and it worked for me.
public class MyViewModel extends ViewModel {
private LiveData<SomeClass> task;
//...code left for brevity
public LiveData<SomeClass> getTask() {
return task;
}
}
And In my xml file I was able to access it
<TextView
...
android:text="@{viewmodel.task.title}"
add a comment |
up vote
1
down vote
Check your Layout file and ViewModel class. A variable name should be the same in both files.just like:
In ViewModel class:
MutableLiveData<String> emailId = new MutableLiveData<>();
In Layout files:
<EditText
........
android:text="@={loginVM.emailId}"
add a comment |
Your Answer
StackExchange.ifUsing("editor", function () {
StackExchange.using("externalEditor", function () {
StackExchange.using("snippets", function () {
StackExchange.snippets.init();
});
});
}, "code-snippets");
StackExchange.ready(function() {
var channelOptions = {
tags: "".split(" "),
id: "1"
};
initTagRenderer("".split(" "), "".split(" "), channelOptions);
StackExchange.using("externalEditor", function() {
// Have to fire editor after snippets, if snippets enabled
if (StackExchange.settings.snippets.snippetsEnabled) {
StackExchange.using("snippets", function() {
createEditor();
});
}
else {
createEditor();
}
});
function createEditor() {
StackExchange.prepareEditor({
heartbeatType: 'answer',
convertImagesToLinks: true,
noModals: true,
showLowRepImageUploadWarning: true,
reputationToPostImages: 10,
bindNavPrevention: true,
postfix: "",
imageUploader: {
brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
allowUrls: true
},
onDemand: true,
discardSelector: ".discard-answer"
,immediatelyShowMarkdownHelp:true
});
}
});
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f32683129%2fandroid-databinding-error-could-not-find-accessor%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
4 Answers
4
active
oldest
votes
4 Answers
4
active
oldest
votes
active
oldest
votes
active
oldest
votes
up vote
17
down vote
accepted
After hours of trial and error it seems that Android data-binding looks for getters before it looks at public fields. My Order object had a helper method called getAddress
public class Order {
public Address address;
public String getAddress() {
return address.addressLine1 + address.addressLine2;
}
}
The binder was calling that method instead of accessing the public Address field. I put the getAddress method inside the Address object (where it probably should have been to begin with) and the app compiled.
add a comment |
up vote
17
down vote
accepted
After hours of trial and error it seems that Android data-binding looks for getters before it looks at public fields. My Order object had a helper method called getAddress
public class Order {
public Address address;
public String getAddress() {
return address.addressLine1 + address.addressLine2;
}
}
The binder was calling that method instead of accessing the public Address field. I put the getAddress method inside the Address object (where it probably should have been to begin with) and the app compiled.
add a comment |
up vote
17
down vote
accepted
up vote
17
down vote
accepted
After hours of trial and error it seems that Android data-binding looks for getters before it looks at public fields. My Order object had a helper method called getAddress
public class Order {
public Address address;
public String getAddress() {
return address.addressLine1 + address.addressLine2;
}
}
The binder was calling that method instead of accessing the public Address field. I put the getAddress method inside the Address object (where it probably should have been to begin with) and the app compiled.
After hours of trial and error it seems that Android data-binding looks for getters before it looks at public fields. My Order object had a helper method called getAddress
public class Order {
public Address address;
public String getAddress() {
return address.addressLine1 + address.addressLine2;
}
}
The binder was calling that method instead of accessing the public Address field. I put the getAddress method inside the Address object (where it probably should have been to begin with) and the app compiled.
answered Sep 20 '15 at 19:04
MidasLefko
3,04312138
3,04312138
add a comment |
add a comment |
up vote
1
down vote
Android DataBinding error. Could not find accessor
- As this error tells, binding needs
accessor
orgetter
to work and alsosetter
if you use two way binding. - So always put
getter
&setter
in your model class.
add a comment |
up vote
1
down vote
Android DataBinding error. Could not find accessor
- As this error tells, binding needs
accessor
orgetter
to work and alsosetter
if you use two way binding. - So always put
getter
&setter
in your model class.
add a comment |
up vote
1
down vote
up vote
1
down vote
Android DataBinding error. Could not find accessor
- As this error tells, binding needs
accessor
orgetter
to work and alsosetter
if you use two way binding. - So always put
getter
&setter
in your model class.
Android DataBinding error. Could not find accessor
- As this error tells, binding needs
accessor
orgetter
to work and alsosetter
if you use two way binding. - So always put
getter
&setter
in your model class.
answered Aug 9 at 8:55
Khemraj
11.1k22867
11.1k22867
add a comment |
add a comment |
up vote
1
down vote
In my case, My ViewModel
has a variable name starting with m and it was creating a problem
public class MyViewModel extends ViewModel {
private LiveData<SomeClass> mTask; //Chaning the variable name to task and it's getter name to getTask worked for me
//...code left for brevity
public LiveData<SomeClass> getmTask() {
return mTask;
}
}
I changed the variable name mTask
to task
and it's getter name getmTask
to getTask
and it worked for me.
public class MyViewModel extends ViewModel {
private LiveData<SomeClass> task;
//...code left for brevity
public LiveData<SomeClass> getTask() {
return task;
}
}
And In my xml file I was able to access it
<TextView
...
android:text="@{viewmodel.task.title}"
add a comment |
up vote
1
down vote
In my case, My ViewModel
has a variable name starting with m and it was creating a problem
public class MyViewModel extends ViewModel {
private LiveData<SomeClass> mTask; //Chaning the variable name to task and it's getter name to getTask worked for me
//...code left for brevity
public LiveData<SomeClass> getmTask() {
return mTask;
}
}
I changed the variable name mTask
to task
and it's getter name getmTask
to getTask
and it worked for me.
public class MyViewModel extends ViewModel {
private LiveData<SomeClass> task;
//...code left for brevity
public LiveData<SomeClass> getTask() {
return task;
}
}
And In my xml file I was able to access it
<TextView
...
android:text="@{viewmodel.task.title}"
add a comment |
up vote
1
down vote
up vote
1
down vote
In my case, My ViewModel
has a variable name starting with m and it was creating a problem
public class MyViewModel extends ViewModel {
private LiveData<SomeClass> mTask; //Chaning the variable name to task and it's getter name to getTask worked for me
//...code left for brevity
public LiveData<SomeClass> getmTask() {
return mTask;
}
}
I changed the variable name mTask
to task
and it's getter name getmTask
to getTask
and it worked for me.
public class MyViewModel extends ViewModel {
private LiveData<SomeClass> task;
//...code left for brevity
public LiveData<SomeClass> getTask() {
return task;
}
}
And In my xml file I was able to access it
<TextView
...
android:text="@{viewmodel.task.title}"
In my case, My ViewModel
has a variable name starting with m and it was creating a problem
public class MyViewModel extends ViewModel {
private LiveData<SomeClass> mTask; //Chaning the variable name to task and it's getter name to getTask worked for me
//...code left for brevity
public LiveData<SomeClass> getmTask() {
return mTask;
}
}
I changed the variable name mTask
to task
and it's getter name getmTask
to getTask
and it worked for me.
public class MyViewModel extends ViewModel {
private LiveData<SomeClass> task;
//...code left for brevity
public LiveData<SomeClass> getTask() {
return task;
}
}
And In my xml file I was able to access it
<TextView
...
android:text="@{viewmodel.task.title}"
answered Oct 16 at 23:27
L-X
1,96311021
1,96311021
add a comment |
add a comment |
up vote
1
down vote
Check your Layout file and ViewModel class. A variable name should be the same in both files.just like:
In ViewModel class:
MutableLiveData<String> emailId = new MutableLiveData<>();
In Layout files:
<EditText
........
android:text="@={loginVM.emailId}"
add a comment |
up vote
1
down vote
Check your Layout file and ViewModel class. A variable name should be the same in both files.just like:
In ViewModel class:
MutableLiveData<String> emailId = new MutableLiveData<>();
In Layout files:
<EditText
........
android:text="@={loginVM.emailId}"
add a comment |
up vote
1
down vote
up vote
1
down vote
Check your Layout file and ViewModel class. A variable name should be the same in both files.just like:
In ViewModel class:
MutableLiveData<String> emailId = new MutableLiveData<>();
In Layout files:
<EditText
........
android:text="@={loginVM.emailId}"
Check your Layout file and ViewModel class. A variable name should be the same in both files.just like:
In ViewModel class:
MutableLiveData<String> emailId = new MutableLiveData<>();
In Layout files:
<EditText
........
android:text="@={loginVM.emailId}"
edited Nov 12 at 9:16
Suraj Rao
22.5k75469
22.5k75469
answered Nov 12 at 9:09
rahul
112
112
add a comment |
add a comment |
Thanks for contributing an answer to Stack Overflow!
- Please be sure to answer the question. Provide details and share your research!
But avoid …
- Asking for help, clarification, or responding to other answers.
- Making statements based on opinion; back them up with references or personal experience.
To learn more, see our tips on writing great answers.
Some of your past answers have not been well-received, and you're in danger of being blocked from answering.
Please pay close attention to the following guidance:
- Please be sure to answer the question. Provide details and share your research!
But avoid …
- Asking for help, clarification, or responding to other answers.
- Making statements based on opinion; back them up with references or personal experience.
To learn more, see our tips on writing great answers.
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f32683129%2fandroid-databinding-error-could-not-find-accessor%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown