2017-05-27 208 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

是的,我唯一不理解的是静态上下文的定义。我认为每个没有关键词'静态'的方法都是非静态的。 –

相关问题