在Android上使用Java进行编程时,经常需要处理这种错误。例如我有一个班,我设置了一个标志。从外部调用非静态方法
public class ViewActivity extends Activity {
...
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
...
}
在另一类我想重置FLAG_KEEP_SCREEN_ON
class DrawOnTop extends View {
...
if (condition) {
getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
}
但是,这并不工作,因为我得到“的方法getWindow是未定义的类型DrawOnTop”。
所以我尝试定义ViewActivity类clearFlags方法
void clearFlags() {
getWindow().clearFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
}
,并把它从DrawOnTop级呼叫:
if (condition) {
ViewActivity.clearFlags();
}
这并不工作,以及:我得到“不能对ViewActivity类型的非静态方法clearFlags()进行静态引用“。 那么,让我们把它变成静态的吧。
static void clearFlags() {
getWindow().clearFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
}
,然后我得到“不能让从活动类型的静态引用非静态方法getWindow”
我怎么能执行这样的说法?
您需要将*实际*'ViewActivity'实例,并使用*参考,从里面'DrawOnTop' *。 –