我一直在尝试将我当前的活动视图与其他随机布局文件进行比较,使用:
if (this.findViewById(android.R.id.content).getRootView().getId() ==
findViewById(R.layout.layout_1).getId())
上面的代码不起作用。
显示的相应 ID 为 -1 和 22566789
可以比较它们吗?请让我知道任何其他方法来比较它们。
我一直在尝试将我当前的活动视图与其他随机布局文件进行比较,使用:
if (this.findViewById(android.R.id.content).getRootView().getId() ==
findViewById(R.layout.layout_1).getId())
上面的代码不起作用。
显示的相应 ID 为 -1 和 22566789
可以比较它们吗?请让我知道任何其他方法来比较它们。
您显示的代码的问题是您调用findViewById(R.layout.layout_1)
. 这应该返回 null。R.layout.layout_1
不是视图 ID,它是布局 ID,因此findViewById()
应该失败。
如果您知道第二个布局中根视图的 ID,请使用它(格式为R.id.my_root_view
)。
如果您想比较实际的布局 ID,我建议您在调用时存储当前的布局 ID setContentView()
(假设这是一个 Activity)。
我为你写的简单的前任;
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);