You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.27 23:24:26