Android Studio Kotlin报错:MyWebview类无无参构造函数
问题原因
Android系统启动Activity时,会通过反射调用无参构造函数实例化Activity组件。你的MyWebview类只定义了带参数的构造函数,导致系统无法创建实例,因此抛出has no zero argument constructor错误。另外,你手动new MyWebview的方式完全错误——Activity不能通过手动实例化启动,必须由系统通过Intent管理创建。
解决方案
核心修正点
- 给
MyWebview添加系统必需的无参构造函数 - 放弃构造函数传参,改用
Intent的Extra字段传递URL和返回页信息
修改后的完整代码
MyWebview类
class MyWebview : AppCompatActivity() { // 定义Extra键常量,统一管理参数标识 companion object { const val EXTRA_TARGET_URL = "extra_target_url" const val EXTRA_BACK_PAGE_CLASS = "extra_back_page_class" } private lateinit var targetUrl: String private lateinit var backPageClass: Class<*> private val webview: WebView by lazy { findViewById(R.id.webview) } private val closeButton: TextView by lazy { findViewById(R.id.close_webview) } // 系统要求的无参构造函数 constructor() : super() override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_web_view) // 从Intent中取出传递的参数 targetUrl = intent.getStringExtra(EXTRA_TARGET_URL) ?: "" backPageClass = intent.getSerializableExtra(EXTRA_BACK_PAGE_CLASS) as Class<*> initWebView() setupCloseButton() } private fun initWebView() { webview.webViewClient = WebViewClient() webview.apply { loadUrl(targetUrl) settings.javaScriptEnabled = true settings.safeBrowsingEnabled = true settings.allowContentAccess = true } } private fun setupCloseButton() { closeButton.setOnClickListener { startActivity(Intent(this, backPageClass)) } } override fun onBackPressed() { if (webview.canGoBack()) { webview.goBack() } else { super.onBackPressed() } } }
MainActivity调用代码
iButton.setOnClickListener { val intent = Intent(this, MyWebview::class.java) // 传入目标URL intent.putExtra(MyWebview.EXTRA_TARGET_URL, "https://www.google.com/") // 传入返回页的Class对象(Class默认实现Serializable,可直接传递) intent.putExtra(MyWebview.EXTRA_BACK_PAGE_CLASS, MainActivity::class.java) startActivity(intent) }
补充说明
- 若传递自定义对象而非
Class<*>,需让对象实现Serializable或Parcelable接口 - 建议在获取Extra时添加空值判断逻辑,避免空指针异常(示例中用
?: ""处理URL空值,实际项目可根据需求添加错误提示)
内容的提问来源于stack exchange,提问作者Harvey Xie
相关产品推荐
相关产品推荐

