2016-07-24 34 views
3

我想在結束封閉的活動,這樣的XML來定義一個事件偵聽器:Android數據綁定 - 我可以訪問佈局XML中的封閉活動嗎?

<EditText 
    android:id="@+id/finish" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:imeOptions="actionDone" 
    android:inputType="text" 
    android:onEditorAction="@{() -> activity.finish()}" /> 

不過,我沒有封閉活動的參考。我知道我可以使用<variable>來傳遞它,但Activity似乎是一個太常見的變量,無法在每個佈局中明確傳遞......我認爲引入了數據綁定來簡化代碼。在ViewDataBinding課程中我沒有找到任何提示。

回答

2

您可以訪問上下文,但不會自動轉換爲活動。它是有道理的,如果通脹上下文是一個活動,你可以自動檢索它作爲一個變量。您可以在android.com上爲此添加功能請求。

在平均時間,我知道這是一個有點長,但只要通貨膨脹背景下是一種活動,你可以這樣做:

<EditText 
    android:id="@+id/finish" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:imeOptions="actionDone" 
    android:inputType="text" 
    android:onEditorAction="@{() -> ((Activity)context).finish()}" /> 
+0

我試圖做到這一點,但括號是誤解通過解析器並轉換爲:(Activity)(getRoot()。getContext())。finish();編譯失敗,出現「錯誤:不是語句」。 – Avi

+0

實際上,這種投射適用於其他變量。只有內置的「上下文」會導致這個問題。 – Avi

相關問題