How to access android's R object in NativeScript?

拥有回忆 提交于 2019-12-24 21:34:25

问题


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

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!