- 有没有办法从应用程序传递信息到库中?我能否修改库的R类?或者我可以从库中使用应用程序的R类?我也可以将库的这一部分作为函数调用,传递我需要的参数。但是第一个解决方案可能更加简洁?
您不需要修改R类,因为您可以通过创建具有相同名称的文件来覆盖资源文件。但这不是一个干净的解决方案,因为您需要不断确保项目和库资源名称相同。
- 无论问题1的答案是什么。我应该在哪里以及如何做?库本身具有欢迎活动,这应该是应用程序中的第一个活动。在应用程序启动并在第一个活动开始之前,我应该在哪里执行此操作?
与其覆盖资源名称,您最好修改库以接收配置作为使用库的合同。以下是示例:
首先,创建用于保存配置的类:
public class Configuration {
private int welcomeImageDrawableId;
private int logoDrawableId;
public Configuration(int welcomeImageDrawableId, int logoDrawableId) {
this.welcomeImageDrawableId = welcomeImageDrawableId;
this.logoDrawableId = logoDrawableId;
}
public int getLogoDrawableId() {
return logoDrawableId;
}
}
第二步,使用配置类为库创建一个单例类,该类将被库内部使用:
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;
}
}
第三步,通过单例类使用您库中的配置类。例如:
singletonClass.使用配置类();
将Original Answer翻译为“最初的回答”。
// assume imvLogo is an existing ImageView
Configuration configuration = MyLibrary.getInstance().getConfiguration();
imvLogo.setImageResource(configuration.getLogoDrawableId());
Last, 当使用该库时,请注册合同:
Configuration configuration = new Configuration(R.drawable.welcome, R.drawable.logo);
MyLibrary.createInstanceWith(configuration);
注意:所有代码尚未测试,可能会出现错误。
原始答案翻译成中文为“最初的回答”。
Intent
可以携带额外的数据。如果该活动是从某个活动调用的,请使用它。如果不是,则表示它只是从启动器中调用的,在该活动中编写自定义内容。 - TorisputExtra()
。Intent https://developer.android.com/reference/android/content/Intent#public-methods 和 Guide https://developer.android.com/guide/components/intents-filters#Building - Toris