Android导入AppCompatActivity提示未使用 调用方法报错如何解决
Android 配置Toolbar时AppCompatActivity方法调用异常解决方案
问题核心原因
两个异常本质是同一问题导致:
- 当前类没有继承
AppCompatActivity:setSupportActionBar()、getSupportActionBar()都是AppCompatActivity类的成员方法,只有继承了AppCompatActivity的子类才能直接调用。你手动导入AppCompatActivity包但没有在类定义中继承它,IDE自然会提示导入未使用,也不会在你写方法时给出自动导包提示。同项目其他类能正常调用这些方法,必然是已经继承了AppCompatActivity。 - 手动new AppCompatActivity实例报错是因为Activity属于Android系统组件,实例必须由系统通过反射创建并完成生命周期初始化,自行new出来的Activity实例没有绑定Context、没有经过生命周期流程,调用相关方法必然触发崩溃。
另外你代码里的setDisplayShowHomeAsUpEnabled()是不存在的方法,正确方法名为setDisplayShowHomeEnabled()。
修复步骤
- 修改当前类的继承关系,将父类改为
AppCompatActivity,根据项目依赖版本选择对应导包语句:
// 若项目使用AndroidX,用这个导包 import androidx.appcompat.app.AppCompatActivity; // 若项目使用老版本support库,用这个导包,二选一即可,和项目现有依赖保持一致 // import android.support.v7.app.AppCompatActivity; // 类继承修改 public class YourActivity extends AppCompatActivity { // 类内部逻辑 }
- 确认项目已正确引入appcompat依赖:如果使用AndroidX,在模块级build.gradle中确认存在
implementation 'androidx.appcompat:appcompat:xxx'依赖;如果使用老版本support库,确认存在implementation 'com.android.support:appcompat-v7:xxx'依赖,依赖版本要和项目中其他support包版本一致。 - 删除手动new AppCompatActivity的测试代码,继承完成后直接在
onCreate方法中调用原有Toolbar配置代码即可,修正后的完整代码:
@Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.your_layout); Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar); setSupportActionBar(toolbar); if(getSupportActionBar() != null){ getSupportActionBar().setDisplayHomeAsUpEnabled(true); getSupportActionBar().setDisplayShowHomeEnabled(true); // 修正方法名 } }
内容的提问来源于stack exchange,提问作者user18974397
相关产品推荐
相关产品推荐

