簡體   English   中英

Android:如何獲取鰭狀肢內部布局的ID?

[英]Android: How to get the id of a layout inside a flipper?

答案:使用viewFlipper.getCurrentView()。getId()

嗨,我被困在必須根據正在顯示的屏幕執行一組語句的位置(必須使用IF條件)。 布局文件夾僅包含一個屏幕(即main.xml)。 但是在main.xml中有三個絕對布局(01,02&03)。 我正在使用鰭狀肢在這些屏幕上滑動。

之前,當我曾經在兩個屏幕(main.xml和main2.xml)之間切換時,我沒有問題。 我使用兩個按鈕在屏幕之間進行切換,並且在每個按鈕內使用一個標志,並在IF條件下使用相同的標志來執行代碼。 現在,我已經實現了腳蹼,現在無法使用標志了。 所以我想到了在IF條件下使用LAYOUT ID。 但是我需要知道如何在java編碼中檢查布局ID 有人可以幫我嗎?

例如:

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
}

(以上代碼拋出“活動類型中的方法findViewById(int)不適用於參數()”錯誤)

最簡單的方法是,只需調用ViewFlipper.getDisplayedChild()並根據索引(0、1、2)進行比較即可。 如果絕對有必要按ID進行比較,則還可以執行以下操作:

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

除非您重載==運算符,否則在視圖之間使用==無效。

嘗試使用.equals()代替。

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

其中v1是視圖。

在您的第一個代碼塊中,您可以嘗試

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

as findViewById要么返回一個視圖(如果找到),要么返回null。

至於如何找到布局ID,您剛剛嘗試過R.layout。(...)嗎? 如果它們都是單獨的xml文件,那將起作用,因為它返回整個文件的唯一編號,而不是文件內部的視圖組。

也許附在鰭狀肢上的聽眾可以告訴您您需要了解什么?

鏈接- 在Android的View Flipper上觸摸滾動?

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM