我一直在尝试使用以下方法将活动中的当前视图与其他随机布局文件进行比较:
if (this.findViewById(android.R.id.content).getRootView().getId() ==
findViewById(R.layout.layout_1).getId())
以上代码无效。
显示的相应ID为-1和22566789
有可能比较它们吗?请让我知道任何其他方法来比较它们。
答案 0 :(得分:0)
您展示的代码问题在于您致电findViewById(R.layout.layout_1)
。这应该返回null。 R.layout.layout_1
不是视图ID,而是布局ID,因此findViewById()
会失败。
如果您知道第二个布局中根视图的ID,请使用它(格式为R.id.my_root_view
)。
如果您想比较实际的布局ID,我建议您在调用setContentView()
时存储当前的布局ID(假设这是一个活动)。
答案 1 :(得分:0)
简单的前我为你写的;
public void findId(View root, int id){
if(root instanceof ViewGroup){
for(int i = 0; i < ((ViewGroup)root).getChildCount(); ++i){
findId(((ViewGroup) root).getChildAt(i), id);
}
}
if(root.getId() == id)
{
Log.i("view","in it");
}
}
通话方法;
View root = getWindow().getDecorView().findViewById(android.R.id.content); // activity contentview
findId(root, R.id.textView1);