如何将活动中的当前视图 ID 与其他布局 ID 进行比较



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

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,请使用该 ID (格式为 R.id.my_root_view )。

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

简单的前任我为你写的;

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);

最新更新