0

我一直在尝试将我当前的活动视图与其他随机布局文件进行比较,使用:

if (this.findViewById(android.R.id.content).getRootView().getId() == 
        findViewById(R.layout.layout_1).getId())

上面的代码不起作用。

显示的相应 ID 为 -1 和 22566789

可以比较它们吗?请让我知道任何其他方法来比较它们。

4

2 回答 2

0

您显示的代码的问题是您调用findViewById(R.layout.layout_1). 这应该返回 null。R.layout.layout_1不是视图 ID,它是布局 ID,因此findViewById()应该失败。

如果您知道第二个布局中根视图的 ID,请使用它(格式为R.id.my_root_view)。

如果您想比较实际的布局 ID,我建议您在调用时存储当前的布局 ID setContentView()(假设这是一个 Activity)。

于 2013-10-24T14:02:06.570 回答
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);
于 2013-10-24T14:07:55.083 回答