(Android Xamarin) Get Resource string value instead of int
Solution 1
try it as using Resources.GetString for getting string from string Resources
Context context = this;
// Get the Resources object from our context
Android.Content.Res.Resources res = context.Resources;
// Get the string resource, like above.
string recordTable = res.GetString(Resource.String.RecordsTable);
Solution 2
It's worth noting that you do not need to create an instance of Resources
to access the resource table. This works equally well:
using Android.App;
public class MainActivity : Activity
{
void SomeMethod()
{
string str = GetString(Resource.String.your_resource_id);
}
}
GetString()
, used this way, is a method defined on the abstract Context
class. You can also use this version:
using Android.App;
public class MainActivity : Activity
{
void SomeMethod()
{
string str = Resources.GetString(Resource.String.your_resource_id);
}
}
Resources
, used this way, is a read-only property on the ContextWrapper
class, which Activity
inherits from the ContextThemeWrapper
class.
Solution 3
If you're not in an activity or another context, you should get the context and use it to get the Resources and PackageName, as the following example:
int resID = context.Resources.GetIdentifier(listEntryContact.DetailImage.ImageName, "drawable", context.PackageName);
imageView.SetImageResource(resID);
Comments
-
raberana almost 4 years
Im just starting to create a simple android app with the use of Xamarin using VS2012. I know there is a type of Resource just for strings. In my resource folder, i have an xml file like this:
<?xml version="1.0" encoding="utf-8"?> <resources> <string name="RecordsTable">records</string> <string name="ProjectTable">projects</string> <string name="ActivitiesTable">activities</string> </resources>
In my code, I want to use the values of those resources like:
string recordTable = Resource.String.RecordsTable; //error, data type incompatibility
I know that
Resource.String.<key>
returns an integer so I cant use the code above. I am hoping thatrecordTable
variable will have a value ofrecords
.Is there a way I can use the value of those resource string for my code's string variables?