How to access android's R object in NativeScri

2019-09-02 09:11发布

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?

3条回答
成全新的幸福
2楼-- · 2019-09-02 09:53

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;
}
查看更多
成全新的幸福
3楼-- · 2019-09-02 10:04

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

查看更多
闹够了就滚
4楼-- · 2019-09-02 10:09

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'));
查看更多
登录 后发表回答