Phonegap插件活动导入布局

Bru*_*uno 5 android phonegap-plugins cordova

我正在开发一个具有Activity的Cordova插件,我需要从此活动访问应用程序R.layout,以便我可以调用setContentView.

我目前正在做这个import com.example.hello.R,然后在onCreate method I callsetContentView(R.layout.mysurfaceview)`:

问题是我的插件只有在应用程序名称有效时才能工作com.example.hello,但我需要在不同的应用程序上安装我的插件而无需手动进行导入.

有没有办法进行通用导入,类似import <appName>.R或其他任何方式?

小智 13

您可以在运行时调用应用程序的资源池,并使用Resources.getIdentifier()函数按名称引用标识符.此函数需要资源名称,类型和包名称.例如:

 String package_name = getApplication().getPackageName();
 Resources resources = getApplication().getResources();
 setContentView(resources.getIdentifier("my_activity_layout", "layout", package_name));
Run Code Online (Sandbox Code Playgroud)

其中"my_activity_layout"是布局xml文件的名称.您也可以以相同的方式引用字符串,drawable和其他资源.在活动中获得该代码后,可以将活动布局文件指定为plugin.xml文件中的源文件,并将其设置为复制到res/layout文件夹中.

<source-file src="path/to/your/layout/file.xml" target-dir="res/layout"/>
Run Code Online (Sandbox Code Playgroud)

如果您对使用源文件指定有任何其他疑问,请查看Phonegap插件规范.