gpt4 book ai didi

Android Studio - 如何通知 Activity View 已更改变量?

转载 作者:搜寻专家 更新时间:2023-11-01 08:44:37 24 4
gpt4 key购买 nike

在 Android Studio 中,我有一个调用 View 的 Activity 。用户点击 View , View 持续一段时间,然后结束并设置 public boolean finished = true。

下面是调用 View 的 Activity 及其代码:

protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
myView = new GameLevelView(this);
setContentView(myView);
}

在 View 中,我有这个执行:

protected void onDraw(Canvas canvas) {

//Update canvas elements

if(cerainCondition == true){
finished = true;
}

try {
Thread.sleep(10); // Delay
} catch (InterruptedException e) { }

invalidate(); // Force a re-draw
}

这基本上一直在循环。但是,我希望原始 Activity 知道此 View 已设置 finished = true,以便我可以开始另一个 Activity 。我不想破坏 View ,因为其他 Activity 将显示在顶部。

我该如何让 Activity 知道 View 已经更改了一个变量?

我考虑过 BroadcastReceiver,但我看不到实际设置广播的方法,所以我不确定这是否可行。

最佳答案

我相信您正在寻找的答案是 here .本质上,您需要创建一个变量更改监听器,但是该文档的作者对这个主题的研究比我多得多。

编辑

解决您的问题的一种方法是创建一个包装类来存储您的当前值并跟踪该值何时更改,如图所示 here .

为了跟踪包装类的变化,您需要创建一个自定义 View ,该 View 实现其传统构造函数,并带有一个额外的自定义方法,可以检测值的变化。

然后,在您的 layout.xml 文件中,您只需添加这个自定义 View ,它就像一个常规 View ,除了能够监听您的 bool 值何时发生变化。

我建议阅读这篇文章,因为它写得很好,我希望它能回答你的问题!

关于Android Studio - 如何通知 Activity View 已更改变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29662731/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com