Android:如何在鳍状肢内获取布局的ID?

时间:2011-02-14 21:56:21

标签: java android layout if-statement android-layout

Ans:使用viewFlipper.getCurrentView()。getId()

您好, 我陷入了一个必须根据正在显示的屏幕执行一组语句的位置(必须使用IF条件)。布局文件夹只包含一个屏幕(即main.xml)。但是在main.xml中有三个绝对布局(01,02和03)。我正在使用鳍状肢滑过这些屏幕。

早些时候我曾经在两个屏幕(main.xml和main2.xml)之间切换,我没有问题。我使用两个按钮在屏幕之间切换,我在每个按钮内部使用了一个标志,并在我的IF条件下使用相同的标志来执行代码。既然我已经实现了鳍状肢,我就无法使用旗帜了。所以我想在IF条件下使用LAYOUT ID。但我需要知道如何在java编码中检查布局ID 。有人可以帮助我吗?

对于Ex:

if(findViewById(R.id.AbsoluteLayout01)==true)
{
execute
}
else if(findViewById(R.id.AbsoluteLayout02)==true)
{
execute #2
}

(上面的代码抛出“不兼容的操作数类型视图和布尔值”错误)

所以我试过

if(findViewById()==v1) //v1 is the object for AbsoluteLayout01
{
execute
}
else if(findViewById()==v2) //v2 is the object for AbsoluteLayout02
{
execute #2
}

(上面的代码抛出“Activity中的方法findViewById(int)不适用于arguments()”错误)

4 个答案:

答案 0 :(得分:3)

最简单的方法是,您只需调用ViewFlipper.getDisplayedChild(),然后根据索引(0,1,2)进行比较。如果绝对有必要通过id进行比较,您也可以这样做:

ViewFlipper vf = //whatever assignment
switch(vf.getCurrentView().getId()) {
    case R.id.AbsoluteLayout1:
        //do work
}

答案 1 :(得分:2)

除非重载==运算符....

,否则使用==将无法在Views之间工作

尝试使用.equals()。

if(findViewById(R.id.AbsoluteLayout01).equals(v1))

其中v1是一个视图。

答案 2 :(得分:0)

在您的第一个代码块中,您可以尝试

if (findViewById(R.id.absoluteLayout01) != null) {
    ....
}

因为findViewById返回一个视图,如果找到它,或者返回null。

至于如何找到布局ID,你刚试过R.layout。(...)?如果它们都是单独的xml文件,那将会有效,因为它返回整个文件的唯一编号,而不是文件中的视图组。

答案 3 :(得分:0)

也许附在鳍状肢上的聆听者可以告诉你你需要知道什么?

链接 - Touch Scroll on View Flipper in Android?