gpt4 book ai didi

android - 使用随机变化的 view.getId()

转载 作者:行者123 更新时间:2023-11-29 23:28:27 27 4
gpt4 key购买 nike

所以我使用了 view.getId() 来实现改变我所拥有的,就像这样:

public void changeLinear(View view) {
layoutPrimer.setVisibility(view.getId() == R.id.btnPrimers ? View.VISIBLE : View.GONE);
layoutSegon.setVisibility(view.getId() == R.id.btnSegons ? View.VISIBLE : View.GONE);
layoutPostre.setVisibility(view.getId() == R.id.btnPostres ? View.VISIBLE : View.GONE);
layoutExtra.setVisibility(view.getId() == R.id.btnExtres ? View.VISIBLE : View.GONE);
}

我正在尝试在 view.getId() == R.id.btn.. 中实现相同的逻辑,方法是在我定义的同一逻辑中清除 radioGroup:

public void displayFalse(View view) {

if(view.getId() == R.id.btnPrimers){
rgPrimer.clearCheck();
}else if(view.getId() == R.id.btnSegons){
rgSegon.clearCheck();
}else if(view.getId() == R.id.btnPostres) {
rgPostre.clearCheck();
} else {
swcTriaExtra1.setChecked(false);
swcTriaExtra2.setChecked(false);
swcTriaExtra3.setChecked(false);
swcTriaExtra4.setChecked(false);
swcTriaExtra5.setChecked(false);
}
}

但问题是第二个 view.getId() 与我在顶部函数中获得的那个不同,它是顶部的 7f070027 和顶部的 7f070022。

因此,在不随时更改 View 的情况下,我有不同的 view.getId()。所以当我想在第二个函数中进入条件:if(view.getId() == R.id.btnPrimers) 时,它不会进入,因为不知何故它是不同的。

这些 View ID 如何工作?我怎样才能克服这个问题?有没有改进的版本?

最佳答案

假设您从不调用 View.setId(),那么 View.getId () 应该返回分配给布局文件中带有 android:id 的 View 的值。这在应用程序的生命周期内不应更改(重建应用程序后除外)。

我怀疑这里发生的事情是,在第二次比较中,您实际上是在比较 subview 的 View ID,这当然会与其父 View 不同。

出于调试目的,您可以考虑使用 Resource.getResourceName查看与 View 关联的人类可读名称:

getResources().getResourceName(view.getId());

关于android - 使用随机变化的 view.getId(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53123497/

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