FragmentActivity上没有Activity方法

时间:2017-05-30 19:36:29

标签: android android-studio

我的课程已从AppCompatActivity扩展而来FragmentActivity

我有片段,我可以调用getActivity()方法来执行某些操作,例如setTitle()

使用Android Studio 3.0 Canary 2后,我注意到以下问题: IDE标记为错误

  

无法解决方法

所有方法,这些方法未被覆盖或不存在于FragmentActivityAppCompatActivity,例如setTitle()runOnUiThread()以及许多其他方法。

但项目构建和编译没有任何错误。

问题如何解决这个问题?

我尝试了什么

  1. 使缓存无效并重新启动
  2. 更新不知道为什么需要抽象问题的代码,但

    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
       }
    }
    

1 个答案:

答案 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