此应用正在运行。但我不明白为什么我会收到警告。我希望你能提供解决方案。谢谢!
java代码:
/*final int*/ mId = (int) System.currentTimeMillis();
i.putExtra("com.somitsolutions.android.smsscheduler.id", mId);
AlarmManager am = (AlarmManager)
getApplicationContext().getSystemService(getApplicationContext().ALARM_SERVICE); <<-- this is where i get the warning
PendingIntent pi = PendingIntent.getService(getApplicationContext(), mId, i, PendingIntent.FLAG_UPDATE_CURRENT);
顺便说一下,我是初学者,所以我不确定这些代码是否有助于您理解和回答。 :)
答案 0 :(得分:0)
replace
getApplicationContext().ALARM_SERVICE
with
Context.ALARM_SERVICE
您正在尝试使用Context的实例访问Context类中的静态字段,该实例不正确&#34;。
答案 1 :(得分:0)
ALARM_SERVICE是Context的静态。 getApplicationContext()为您传递Context的实例。所以编译器试图说访问变量&#34; ALARM_SERVICE&#34;以静态的方式。
Context.ALARM_SERVICE
答案 2 :(得分:0)
正如您所见ContextWrapper类源代码:
....
Context mBase;
....
@Override
public Context getApplicationContext() {
return mBase.getApplicationContext();
}
表示getApplicationContext()
方法返回Context类的实例。在您的情况下,您正在以ALARM_SERVICE
访问getApplicationContext().ALARM_SERVICE
属性,这意味着使用实例访问静态属性,因此警告建议您不需要使用实例来访问类的静态属性。你可以使用类名来实现:
getApplicationContext().getSystemService(Context.ALARM_SERVICE);