Building a multi-language application in Java. Getting an error when inserting String value from R.string resource XML file:
public static final String TTT = (String) getText(R.string.TTT);
This is the error message:
Error: Cannot make a static reference to the non-static method getText(int) from the type
Context
How is this caused and how can I solve it?
Since
getText()is non-static you cannot call it from a static method.To understand why, you have to understand the difference between the two.
Instance (non-static) methods work on objects that are of a particular type (the class). These are created with the new like this:
To call an instance method, you call it on the instance (
myObject):However a static method/field can be called only on the type directly, say like this:The previous statement is not correct. One can also refer to static fields with an object reference like
myObject.staticMethod()but this is discouraged because it does not make it clear that they are class variables.And the two cannot work together as they operate on different data spaces (instance data and class data)
Let me try and explain. Consider this class (psuedocode):
Now I have the following use case:
What are the values?
Well
In other words,
TTTis a datum that is shared by all the instances of the type. So it make no sense to saySo the question is why is TTT static or why is getText() not static?
Remove the
staticand it should get past this error – but without understanding what your type does it’s only a sticking plaster till the next error. What are the requirements ofgetText()that require it to be non-static?