如何使用数据绑定调用静态方法?

时间:2018-05-11 13:34:38

标签: android android-xml android-databinding

我想在layout.xml文件中调用我的Util类方法,如

<TextView
         android:layout_width="wrap_content"
         android:layout_height="wrap_content"
         android:text="@{PreferenceUtil.getSavedUser().fullName}"/>

我已导入PreferenceUtil

<import type="com.amelio.utils.PreferenceUtil"/>

PreferenceUtil.class有一些方法。

public class PreferenceUtil {

    public static LoginResponse getSavedUser() {
        SharedPreferences sf = Amelio.getInstance().getSharedPreferences(PREF, Context.MODE_PRIVATE);
        String userJson = sf.getString(PREF_USER_DATA, null);
        if (userJson == null || userJson.equals("")) {
            return null;
        }
        return new Gson().fromJson(userJson, LoginResponse.class);
    }
}

问题

    Found data binding errors.
****/ data binding error ****msg:cannot find method getSavedUser() in class com.amelio.utils.PreferenceUtil
file:D:\Khemraj\_AndroidStudioWorkspace_\amelioFinal\app\src\main\res\layout\activity_cart.xml
loc:94:40 - 94:68
****\ data binding error ****

这是否可行,如果建议与否,也建议。

2 个答案:

答案 0 :(得分:1)

我希望您必须找到答案,以防万一您仍在挣扎中,然后在下面找到答案。

zsh

请确保您的LoginResponse标记为公开才能访问这些值。

答案 1 :(得分:0)

以防您尚未找到答案:
您需要导入对象类型并将其强制转换为这种类型:

<data>
  <import type="com.amelio.utils.PreferenceUtil"/>
  <import type="yourdirectory.LoginResponse"/>

</data>


<TextView
     android:layout_width="wrap_content"
     android:layout_height="wrap_content"
     android:text='@{((LoginResponse)(PreferenceUtil.getSavedUser()).fullName}' />