Android MainActivity报onCreate(Bundle)重复定义报错如何解决
报错原因
'onCreate(Bundle)' is already defined in activity 编译错误由类内方法重名导致:Java 不允许同一个类中存在两个方法签名完全一致的方法,当前MainActivity里写了两个独立的onCreate(Bundle)方法,分别承载广告初始化、WebView初始化逻辑,直接触发重名冲突,构建失败。
修复方法
将两个onCreate方法的逻辑合并到同一个带@Override注解的onCreate方法中即可,无需重复调用super.onCreate()和setContentView(),合并后的参考代码如下:
public class MainActivity extends AppCompatActivity { private AdView mAdView; private WebView webView; @SuppressLint("SetJavaScriptEnabled") @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); // WebView初始化逻辑 CustomWebViewClient client = new CustomWebViewClient(this); webView = findViewById(R.id.webView); webView.setWebViewClient(client); webView.getSettings().setJavaScriptEnabled(true); webView.clearCache(true); webView.loadUrl("https://example.com/"); // 广告初始化与加载逻辑 MobileAds.initialize(this, new OnInitializationCompleteListener() { @Override public void onInitializationComplete(InitializationStatus initializationStatus) {} }); mAdView = findViewById(R.id.adView); AdRequest adRequest = new AdRequest.Builder().build(); mAdView.loadAd(adRequest); } }
调整要点
- 把
mAdView、webView两个成员变量统一放到类顶部声明,不要插在方法之间 - 仅保留一个带
@Override标记的onCreate生命周期方法,super.onCreate()、setContentView()仅调用一次,重复调用会引发布局重复加载、状态异常问题 - 广告初始化、WebView初始化的执行顺序不影响基础功能,按顺序放在同一个onCreate中执行即可
补充:使用AdMob广告时需要提前在AndroidManifest.xml中配置应用的广告ID,否则会出现广告加载失败的问题。
内容的提问来源于stack exchange,提问作者MASAN
相关产品推荐
相关产品推荐

