2017-05-27 248 views
-2

當然,我知道非靜態方法需要從非靜態上下文中調用。非靜態方法無法從Android Studio中的非靜態方法調用

而且我失去的東西時,我認爲

public void methodName(int i) { ... } 

非靜態

由於Android 2.3.2工作室它已檢舉的靜態上下文,所以我不能從方法調用下面的語句

enter image description here

方法:

public void deleteCard(int id){ 
    for(int i = 0; i < cards.size(); i++){ 
     if(cards.get(i).id == id){ 
      cards.remove(i); 
      notifyItemRemoved(i); 
      notifyItemRangeChanged(i, cards.size()); 
     } 
    } 
} 
+1

要調用它,就好像它是靜態的,而不是調用它通過一個實例對象 – antlersoft

+1

你應該做的事'新CardAdapter()deleteCard(ID);'來代替。 –

+0

Works ..那麼我至少今天學到了一些新東西。由於 –

回答

1

錯誤消息時編譯和堆棧跟蹤消息在應用程序生命週期發生異常期間提供了足夠的線索。

你的情況,上面清清楚楚地寫着「非靜態方法deleteCard(int)不能從靜態上下文中引用」。在這裏你是正確的,刪除​​卡是非靜態的,從消息的第一部分也是顯而易見的:「非靜態方法deleteCard(int) ..」,但你錯過了消息的第二部分,它告訴了這個問題,即「...不能從靜態上下文「引用。

你應該在這樣的情況下看,如何你引用的字段或方法。您正在使用類名來調用該方法。這是一個靜態環境

成員的所有實例字段和方法需要他們的類的實例,然後只用引用這個對象,你可以訪問它們。非靜態成員字段和方法屬於一個對象。您訪問對象的非靜態字段並在對象上調用非靜態方法,爲此您需要引用相應的類。

您需要類CardAdapter的一個目的是調用任何實例成員方法作爲該方法是非靜態的。

+0

是的,我唯一不理解的是靜態上下文的定義。我認爲每個沒有關鍵詞'靜態'的方法都是非靜態的。 –

相關問題