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

如何从匿名类中获取值?我的代码无法获取test0值请求帮助

为什么我无法从匿名点击监听器中获取到test0的值?

我看了你的代码,问题核心出在代码执行的时机上!咱们一步步拆解下:

你当前的代码执行流程是这样的:

  1. 创建String数组test,初始状态下test[0]是null
  2. 给txt设置点击监听器,但此时onClick方法完全没执行——它只有在用户实际点击按钮的时候才会触发
  3. 你设置完监听器后立刻就把test[0]赋值给test0并弹出Toast,这时候用户根本还没碰按钮,test[0]自然还是空的

你的原代码:

final String[] test = new String[1];
txt.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {
        test[0] = "abc";
    }
});
String test0 = test[0];
Toast.makeText(this, test0, Toast.LENGTH_SHORT).show();

最简单的解决办法:

把获取值和弹出Toast的逻辑放到onClick方法内部,这样只有用户点击按钮后才会执行这段代码,就能拿到正确的"abc"了:

final String[] test = new String[1];
txt.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {
        test[0] = "abc";
        String test0 = test[0];
        Toast.makeText(MainActivity.this, test0, Toast.LENGTH_SHORT).show();
    }
});

如果你的业务逻辑需要在点击后把这个值传递到其他地方使用,还可以考虑用自定义回调接口或者Android的LiveData来实现异步数据传递,但如果只是弹出Toast的话,上面的方案完全够用。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.22 09:07:30