Android开发报错:Cannot resolve method getSupportFragmentManager()求助
解决“Cannot resolve method getSupportFragmentManager()”报错问题
这个问题我之前也碰到过,核心原因很简单:你的MainActivity继承的是原生的android.app.Activity,而getSupportFragmentManager()是support库专属的方法,只有继承support库中的AppCompatActivity(或者FragmentActivity)才能调用它。
具体解决步骤:
1. 修改Activity的继承类
把你的MainActivity从继承Activity改成继承AppCompatActivity,同时确保import正确的类:
修改后的代码如下:
package com.formation.testfragment; import android.os.Bundle; import android.support.v4.app.FragmentManager; import android.support.v7.app.AppCompatActivity; public class MainActivity extends AppCompatActivity { private FragmentManager fragmentManager; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); fragmentManager = getSupportFragmentManager(); } }
2. 补充gradle依赖(关键!)
看你的build.gradle配置,只引入了support-v4,但AppCompatActivity属于appcompat-v7库(v7会自动依赖v4,所以不用重复担心v4的问题),需要在dependencies块中添加:
implementation 'com.android.support:appcompat-v7:27.1.1'
添加后你的dependencies部分应该是这样:
dependencies { implementation fileTree(dir: 'libs', include: ['*.jar']) implementation 'com.android.support.constraint:constraint-layout:1.1.0' testImplementation 'junit:junit:4.12' androidTestImplementation 'com.android.support.test:runner:1.0.2' androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.2' implementation 'com.android.support:support-v4:27.1.1' implementation 'com.android.support:appcompat-v7:27.1.1' }
3. 同步gradle项目
点击Android Studio右上角的“Sync Project with Gradle Files”按钮,等待同步完成,报错就会消失啦!
为什么这样能解决?
原生的android.app.Activity没有提供getSupportFragmentManager()方法,这个方法是Google为了让低版本Android系统也能使用Fragment等新特性,在support库中封装的。继承AppCompatActivity(它是FragmentActivity的子类,自带更多兼容特性)后,就能直接调用这个方法来管理support库的Fragment了。
内容的提问来源于stack exchange,提问作者Bassem Jlassi
相关产品推荐
相关产品推荐

