-
我是否可以将此信息从应用程序传递到库?
我可以修改图书馆的R类吗?或者我可以用
程序库中的R类?我也可以称之为
库作为函数传递我需要的参数。但第一
解决方案对我来说可能更干净?
您不需要修改R类,因为您可以通过创建同名文件来重写资源文件。但这不是一个干净的解决方案,因为您需要不断地确保您的项目和库资源名称是相同的。
-
不管问题1的答案是什么。我在哪里做这个,怎么做?这个
图书馆有欢迎活动本身,应该是
应用程序中的第一个活动。一旦这个应用程序出现,我该怎么做?在哪里做?
在第一个活动开始之前开始?
与其重写资源名称,不如修改您的库以接收作为使用库合同的配置。这里是示例:
弗斯特
,创建用于保存配置的类:
public class Configuration {
private int welcomeImageDrawableId;
private int logoDrawableId;
// constructor
public Configuration(int welcomeImageDrawableId, int logoDrawableId) {
this.welcomeImageDrawableId = welcomeImageDrawableId;
this.logoDrawableId = logoDrawableId;
}
// setter and getter.
public int getLogoDrawableId() {
return logoDrawableId;
}
}
第二
,通过创建
Singleton
将由库内部使用的类:
public class MyLibrary {
private static MyLibrary myLibrary;
private Configuration configuration;
private MyLibrary(){}
private MyLibrary(Configuration configuration) {
this.configuration = configuration;
}
public static MyLibrary getInstance() {
if(myLibrary == null) {
throw new RuntimeException("Need call createInstanceWith method first!!");
}
return myLibrary;
}
public static MyLibrary createInstanceWith(Configuration configuration) {
if(myLibrary == null) {
synchronized(MyLibrary.class) {
if (myLibrary == null) {
myLibrary = new MyLibrary(configuration);
}
}
}
return test;
}
public Configuration getConfiguration() {
return configuration;
}
}
第三
,通过singleton类使用库中的配置类。像这样:
// assume imvLogo is an existing ImageView
Configuration configuration = MyLibrary.getInstance().getConfiguration();
imvLogo.setImageResource(configuration.getLogoDrawableId());
最后
,在使用库时注册合同:
Configuration configuration = new Configuration(R.drawable.welcome, R.drawable.logo);
MyLibrary.createInstanceWith(configuration);
注:
所有的代码还没有测试,应该是错误的。