问题
I am trying to access android's R
object in NativeScript with Angular but I haven't had any success. The instructions here say to do it like this:
android.R.color.holo_purple
But when I try to import the android
variable from the application
module or the tns-core-modules/platform
module I get an error that the R
property on the android
object is undefined. How do I get access to R
?
回答1:
you don't need to import android
variable from application
module. it is automatically available by default at runtime. to remove compile time error property doesn't exists
just declare the variable named android
to any
.
for example.
declare var android:any;
export class AppComponent{
let holoPurple=android.R.color.holo_purple;
}
回答2:
The android
here is the main namespace for the Android SDK and not the android
property from the application
module.
See this StackOverflow answer for instruction on how to access the native SDK via TypeScript or use the instruction from the related documentation article
回答3:
Couldn't get existing answers to work in latest nativescript / angular. I resolved it with the following:
Created a file App_Resources/Android/values/keys.xml
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="key_name">xxxxxx</string>
</resources>
Import these
import * as app from 'tns-core-modules/application';
import * as utils from 'tns-core-modules/utils/utils';
then to grab the string
const context = app.android.context;
const res = context.getResources().getString(utils.ad.resources.getStringId('key_name'));
来源:https://stackoverflow.com/questions/51225987/how-to-access-androids-r-object-in-nativescript