-3

我有以下代码:

private static AppWidgetService mInstance = null;

public static void startRefresh() {

        AppWidgetProvider.setRefreshingState(mInstance
                .getApplicationContext());
        AppWidgetManager.refreshHandler(mInstance.getApplicationContext());
    }

它有时会在运行时失败,有时会通过。

对于明显的例外:

cannot call a non-static method from a static context

我很困惑,因为mInstance是静态的,

所以它的实例方法可以从静态上下文中调用。不?

那如果有时失败怎么办?

4

2 回答 2

1

从静态函数中,您可以只调用静态函数或使用静态变量。链接在运行时完成。所以,虽然你的编译会很好,但在运行时它会在调用时失败。如果您想进行该调用,请尝试使您的函数非静态。

或者

从静态方法调用非静态方法的唯一方法是拥有一个包含非静态方法的类的实例。根据定义,非静态方法是在某个类的实例上调用的方法,而静态方法属于类本身。

于 2013-08-22T09:09:26.100 回答
0

当您从非静态块/方法调用静态方法时,会出现此问题。在您的代码中,“setRefreshingState()”和“refreshHandler()”都是静态方法。要调用这些方法,您必须从方法定义中删除静态。

于 2013-08-22T09:22:05.650 回答