在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' *。 –