所以我使用了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中的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.getId()。因此,当我想在第二个函数中加入条件if(view.getId() == R.id.btnPrimers)
时,它就不会进入,因为它有所不同。
这些视图ID的工作方式是什么?我该如何克服这个问题?有改进的版本吗?
答案 0 :(得分:1)
假设您从不调用View.setId(),那么View.getId()应该向您返回布局文件中使用<app></app>
分配给视图的值。在您的应用程序的生命周期内,这不应更改(重建应用程序后除外)。
我怀疑这里发生的是,在第二个比较中,您实际上是在比较子View的视图ID,这当然会不同于其父View。
出于调试目的,您可以考虑使用Resource.getResourceName来查看与视图相关的易于理解的名称:
index.php