我有Main类,它包含函数isSyncAllowed
。我开始另一项服务。如何从此服务调用函数isSyncAllowed
?
它说:
无法进行静态引用 非静态方法 从类型中isSyncAllowed(布尔) 主
如果我将该函数的类型更改为static
并传递context
,我会遇到startManagingCursor不能是静态的问题。
我该如何解决?
UPD。以下是 SyncService 的代码:
public class SyncService extends BroadcastReceiver {
...
public void onReceive(Context context, Intent intent) {
...
Boolean isDownloadAllowed = Kinobaza.isSyncAllowed(true);
}
以下是 Main 的代码:
public class Kinobaza extends ListActivity {
...
public static Boolean isSyncAllowed(Boolean showToasts) {
...
Cursor notesCursor = mDbHelper.fetchAllNotes();
startManagingCursor(notesCursor); // here is the error
}
}
答案 0 :(得分:1)
您可能正在Main.isSyncAllowed(...)
而不是main.isSyncAllowed(...)
,其中main
是类Main
的对象。
如果您在Main
的实例方法中,那么您只需执行isSyncAllowed(...)
。
修改 - 现在我看到了您的代码,您应该通过您提供给服务的isSyncAllowed
传递Intent
。当您启动服务时:
Intent intent = /* however you were constructing your intent */
boolean syncAllowed = /* calculate syncAllowed by calling your existing method */
intent.putExtra("syncAllowed", syncAllowed);
...
然后在您的服务中,您可以检索它:
boolean syncAllowed = getIntent().getBooleanExtra("syncAllowed", true);
您的服务不需要在您的活动中调用实例方法。