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

Android Studio(Kotlin):按钮实现重载Activity后调用指定函数的问题

解决方案分析与代码修改

问题根源

你当前的写法中,refresh() 里调用了 finish(),会立即销毁当前的 anychart Activity 实例。之后执行的 newPie() 是在这个即将被销毁的实例中运行,此时页面控件和配置对象(config、anim)已经处于失效状态,而且新启动的 Activity 是全新的独立实例,完全没有触发 newPie(),所以饼图无法正常渲染。

正确实现方式

需要通过 Intent 传递饼图数据到新启动的 Activity,然后在新实例的生命周期方法(比如 onCreate)中调用 newPie(),确保方法在有效的 Activity 实例中执行。

步骤1:修改点击事件与跳转逻辑

直接在点击事件中构建 Intent 并传递参数,或者修改 refresh() 方法支持参数传递:

button.setOnClickListener {
    val intent = Intent(applicationContext, anychart::class.java)
    // 传递饼图数值,键名可以自定义
    intent.putExtra("PIE_DATA", 33.3)
    startActivity(intent)
    finish()
}

如果需要复用 refresh() 方法,可改为:

fun refresh(pieValue: Double) {
    val intent = Intent(applicationContext, anychart::class.java)
    intent.putExtra("PIE_DATA", pieValue)
    startActivity(intent)
    finish()
}

// 点击事件调用
button.setOnClickListener {
    refresh(33.3)
}

步骤2:在新Activity的onCreate中执行newPie

在 anychart Activity 的 onCreate 方法中,先初始化好 config、anim 等依赖对象,再获取传递的参数并调用 newPie():

override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)
    setContentView(R.layout.your_activity_layout) // 替换为你的布局文件名

    // 初始化饼图相关配置和动画对象(根据你的实际代码补全初始化逻辑)
    config = PieConfig() // 示例,需替换为你实际的Config类
    anim = PieAnimation(config) // 示例,需替换为你实际的Animation类

    // 获取传递的饼图数据
    val pieValue = intent.getDoubleExtra("PIE_DATA", 0.0)
    // 只有当参数有效时调用newPie
    if (pieValue != 0.0) {
        newPie(pieValue)
    }
}

// 保留原newPie函数不变
fun newPie(valeur: Double){
    config.addData(SimplePieInfo(valeur, Color.parseColor("#000000")))
    config.drawText(false)
    config.strokeMode(false)
    anim.applyConfig(config)
    anim.start()
}

关键说明

  • 新启动的 Activity 实例在 onCreate 时,页面控件和配置对象都是全新且有效的,此时调用 newPie() 才能正确渲染饼图。
  • 确保 config、anim 等对象在 onCreate 中完成初始化,避免空指针异常。

内容的提问来源于stack exchange,提问作者Pierre Chevin

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.06 02:40:32