我的课程已从AppCompatActivity
扩展而来FragmentActivity
。
我有片段,我可以调用getActivity()
方法来执行某些操作,例如setTitle()
。
使用Android Studio 3.0 Canary 2后,我注意到以下问题: IDE标记为错误
无法解决方法
到所有方法,这些方法未被覆盖或不存在于FragmentActivity
或AppCompatActivity
,例如setTitle()
,runOnUiThread()
以及许多其他方法。
但项目构建和编译没有任何错误。
问题如何解决这个问题?
我尝试了什么
更新不知道为什么需要抽象问题的代码,但
public class FullViewActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_full_view);
setTitle("test"); //method is not resolved
getIntent(); //method is not resolved
}
}
答案 0 :(得分:1)
此问题已存在一段时间,通常是由于过时的支持库版本。
如果您遵循android.support.v7.app.AppCompatActivity
的类层次结构,您会看到它确实从android.app.Activity
延伸。但是在android.support.v4.app.SupportActivity
类中有一个有趣的注释可能会引起你的问题。它有一个名为@RestrictTo
的注释,旨在限制对特定类集的访问(与默认的Java可见性构造相比,具有不同的粒度类型)。 但在这种情况下,该注释可能会阻止您从SupportActivity
和所有子类(即Activity
)访问所有方法的能力。
我能够通过简单地将appcompat更新到最新版本(写作时为25.3.1)来解决这个问题。原始版本有一组GROUP_ID
,后来更改为LIBRARY_GROUP
。我怀疑android studio处理这些注释的方式是你问题的根源。
在android studio bug跟踪器上有一个已解决的问题版本:https://issuetracker.google.com/issues/37130193