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()”错误)
答案 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)
也许附在鳍状肢上的聆听者可以告诉你你需要知道什么?