从字符串读取时java.lang.IllegalArgumentException

时间:2016-07-03 09:38:27

标签: java android

在我的项目中,我想从字符串中读取我的包名,但是我得到了以下错误。 在我改变代码之前它就像那样:

static {
    sURLMatcher.addURI("com.nooshindroid.yastashir2.model", "alarm", ALARMS);
    sURLMatcher.addURI("com.nooshindroid.yastashir2.model", "alarm/#", ALARMS_ID);
}

在我的应用程序类中,我得到这样的结果:

 public static String context;
@Override
public void onCreate() {
    context = getApplicationContext().getResources().getString(R.string.package_app);
 }

当我改变它时:

  static {
    sURLMatcher.addURI(AlarmApplication.context+".model", "alarm", ALARMS);
    sURLMatcher.addURI(AlarmApplication.context+".model", "alarm/#", ALARMS_ID);
}

这是我的错误:

Unable to create application com.nooshindroid.yastashir2.AlarmApplication: java.lang.IllegalArgumentException: Unknown URL content://com.nooshindroid.yastashir2.model/alarm
                                                 at android.app.ActivityThread.handleBindApplication(ActivityThread.java:4809)
                                                 at android.app.ActivityThread.access$1600(ActivityThread.java:154)

1 个答案:

答案 0 :(得分:0)

static初始化块中的代码在Application onCreate之前运行。因此,当您向匹配器添加URI时,context字段仍为null

您可以在静态初始化中使用BuildConfig.APPLICATION_ID + ".model"吗? BuildConfig字段是在构建时写入的,因此将在静态初始化块中可用。如果APPLICATION_ID不能满足您的需求,您可以随时在build.gradle文件中添加自定义构建配置字段。