2017-05-27 19 views
-2

私は非静的メソッド非静的コンテキストから呼び出される必要があることを知っています。私は非静的メソッドは、Android Studioで非静的メソッドから呼び出すことはできません

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

非静的であることを考えるとき

そして、私は何かが足りないのですか?

のAndroid Studioの2.3.2は、静的コンテキストとしてそれをflagedますのでので、私はメソッドから次のステートメントを呼び出すことはできません

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

作品..よく私は少なくとも今日何か新しいことを学んだ。ありがとう –

答えて

1

エラーメッセージ中アプリケーションの寿命中に例外が発生している間にスタックトレースのメッセージが表示され、問題の十分な手掛かりが得られます。

あなたのケースでは、「非静的メソッドdeleteCard(int)は静的コンテキストから参照できません」と明記されています。ここで、deleteCardは静的ではなく、メッセージの最初の部分から明らかです。「Non static method deleteCard(int) ..」ですが、問題の内容を示すメッセージの2番目の部分が欠落しています。 静的コンテキスト "から参照できません。

このような状況では、フィールドやメソッドをどのように参照しているかを確認する必要があります。メソッドを呼び出すためにクラス名を使用しています。これは、という静的コンテキストです。

すべてのメンバーインスタンスのフィールドとメソッドには、そのクラスのインスタンスが必要です。次に、アクセスできるオブジェクトへの参照のみを使用します。静的メンバーではないフィールドとメソッドは、オブジェクトに属します。オブジェクトの静的でないフィールドにアクセスし、オブジェクト上で非静的メソッドを呼び出すと、対応するクラスの参照が必要になります。

メソッドが静的でないため、インスタンスメンバーメソッドを呼び出すには、クラスCardAdapterのオブジェクトが必要です。

+0

はい、私が理解できなかったのは、静的コンテキストの定義だけでした。私は、キーワード「静的」を持たないすべての方法は非静的であると考えました。 –

関連する問題