2016-07-24 84 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

相关问题