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

时间:2013-10-24 13:58:20

标签: android android-layout android-activity android-navigation

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

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

以上代码无效。

显示的相应ID为-1和22566789

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

2 个答案:

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