2016-07-17 2 views
2

ich ein Stück Code graste (android.app.Activity.java) und ich fand ein Methodenaufruf,IDE zeigt keine Fehler in Java Kompilierungseinheit obwohl Verfahren ungelöst ist

public void invalidateOptionsMenu(){ 
    if (mWindow.hasFeature(Window.FEATURE_OPTIONS_PANEL) && 
       (mActionBar == null || !mActionBar.invalidateOptionsMenu())) { 
      mWindow.invalidatePanelMenu(Window.FEATURE_OPTIONS_PANEL); 
     } 
    } 

Nun, dies ist nicht eine Frage, die speziell betrifft zu Android aber eine Frage zu Java und der IDE. Ich benutze Android Studio und es zeigt diese Methode Anruf in rot mit Nachricht, "kann Methode nicht beheben invalidateOptionsMenu()" aber insgesamt gibt es keinen Fehler beim Parsen und Kompilieren von Activity.java.

Nicht nur diese Methode, sondern auch andere sind ungelöst. Ich habe den Typ von mActionBar überprüft und es handelt sich um ActionBar. Ich ging zu ActionBar.invalidateOptionsMenu() und Methode existiert.

Erstens, warum die Compilierungseinheit geparst und dann kompiliert werden kann, obwohl es nicht aufgelöste Methodenaufrufe gibt. Zweitens, obwohl die Methode existiert (und sollte nicht unaufgelöst zeigen), Wie sollte dieses Verhalten der IDE als interpretiert werden?

+0

Hört sich an, als gäbe es in Ihrem echten Klassenpfad ein Jar (oder Verzeichnis), das von IntelliJ nicht für proaktive Benachrichtigungen gescannt wird. Überprüfen Sie daher, ob die Projekteinstellungen alle Verzeichnisse und Verzeichnisse enthalten, die der reale Klassenpfad enthält. –

+0

@ T.J.Crowder. Es ist Android Studio und die Android-APIs sind Standard-Standard-Java-Standards. Sie sind also alle im Klassenpfad enthalten. Außerdem sind einige Methoden ungelöst und der Rest nicht. Das ist mir verdächtig. Diese Methoden und Klassen bilden die Kern-API von Android SDK. –

+0

Nun, was ist es, Android Studio oder IntelliJ? Sie sagten * "Ich benutze Intellij und ..." * In jedem Fall lohnt es sich, die Pfade nochmals zu überprüfen. Es gibt im Wesentlichen zwei Erklärungen: 1. Das Projekt enthält keine Dinge, die der Klassenpfad tut, und daher kann die IDE sie nicht finden; 2. Die IDE ist kaputt. IntelliJ ist eine der am weitesten verbreiteten und respektierten Java-IDEs der Welt, also würde ich auf einer "Auswahl ist nicht kaputt" -Basis 1 über 2 annehmen. –

Antwort

0

In IntelliJ IDEA es eine Option ist Cache und Neustart zu entkräften:

Datei> Invalidate Caches/Restart> Invalidate und Restart

Wenn Sie Maven verwenden Sie Ihre Abhängigkeiten zu reimportieren sollte :

Öffnen Sie die "Maven Projekte" Tab/Fenster> Alle Maven Projekte Reimport

Verwandte Themen