Android Studio说“无法解析方法”但方法存在并编译

时间:2017-03-30 06:53:04

标签: java android

我正在尝试调试Android Studio关于java SDK文件夹中文件的语法突出显示和定义的行为。该项目构建正常,但Android Studio本身在编辑器中的行为与此不一致。

我已经详细阅读了以下链接中的回复,并没有解决问题: Android Studio says "cannot resolve symbol" but project compiles

我已经尝试了所有这些解决方案,包括“无效并重新启动”,清理,重建,检查sdk目录是否正确,检查所有依赖项是否存在,重新同步gradle,将compileSdkVersion更改为minSdkVersion但它仍然拒绝遵循预期的行为。

Android工作室突出显示了一些红色的方法和符号,当我按下CTRL + B时​​,它们不会跟随它们(转到定义)。但是,当我只是打开文件时,方法和符号就可以了。

例如,对于sdk\sources\android-14\...,在RingtonePreference类的...android\preference\RingtonePreference.java中,有一行:

PreferenceFragment owningFragment = getPreferenceManager().getFragment();

方法getFragment()以红色突出显示“无法解析方法”。

然后我点击getPreferenceManager()上的CTRL + B,跳转到:

public PreferenceManager getPreferenceManager() {
    return mPreferenceManager;
}

然后我点击PreferenceManager上的CTRL + B,跳转到文件...android\preference\PreferenceManager.java。在该文件中有以下内容:

PreferenceFragment getFragment() {
    return mFragment;
}

除了我之外,Android Studio还需要按预期运行。我在这里做错了什么?

作为参考,这是我的项目使用RingtoneManager的方式,但是没有“无法解决”Android Studio红色高亮显示:

import android.content.Context;
import android.content.Intent;
import android.media.RingtoneManager;
import android.net.Uri;
import android.preference.RingtonePreference;
import android.util.AttributeSet;

public class ExtRingtonePreference extends RingtonePreference {
private String mInitialRingtone;

public ExtRingtonePreference(Context context, AttributeSet attrs, int defStyleAttr) {
    super(context, attrs, defStyleAttr);
}

public ExtRingtonePreference(Context context, AttributeSet attrs) {
    super(context, attrs);
}

public ExtRingtonePreference(Context context) {
    super(context);
}

@Override
protected Uri onRestoreRingtone() {
    if(mInitialRingtone == null) {
        return null;
    } else {
        return Uri.parse(mInitialRingtone);
    }
}

public void setInitialRingtone(String initialRingtone) {
    this.mInitialRingtone = initialRingtone;
}

}

1 个答案:

答案 0 :(得分:2)

即使我在更改git分支后遇到同样的问题,我修复它的方法是更改​​ app / build.gradle (例如添加空白行),IDE要求同步**项目和同步后它得到修复。