我有一个MovieViewModel
类,在我的布局文件中用作变量。
<data>
<variable
name="vm"
type="udacity.nanodegree.android.p2.model.comum.MovieViewModel"/>;
</data>
生成名为context的特殊变量以用于绑定 根据需要表达。上下文的值是来自的Context root视图的getContext()。上下文变量将被覆盖 具有该名称的显式变量声明。
我需要将这个特殊变量context
传递给我的类,最好是布局文件中的构造函数:
public class MovieViewModel {
private Context context;
public MovieViewModel(Context context) {
this.context = context;
}
}
有办法吗?
如果不可能,我想将其传递给我的属性,例如:
<TextView
android:id="@+id/text_release"
android:layout_width="wrap_content"
android:layout_height="0dp"
android:layout_weight="1"
android:padding="2dp"
android:text="@{vm.releaseDateFormated(context) ?? ``}"
tools:text="0000"/>
使用MovieViewModel
中的上下文,如下所示:
public String getReleaseDateFormated (Context context){
return releaseDate == null? null: context.getString(R.string.dateToYear, releaseDate);
根据这个answer,我可以这样做,但我尝试并收到了错误:
Error:Execution failed for task ':app:compileDebugJavaWithJavac'.
> java.lang.RuntimeException: Found data binding errors.
****/ data binding error ****msg:cannot find method releaseDateFormated(android.content.Context) in class udacity.nanodegree.android.p2.model.comum.MovieViewModel
file:C:\Users\alexandre\Udacity\Nanodegrees\AndroidDevelopment\P2-PopularMovies\app\src\main\res\layout\fragment_detail.xml
loc:74:40 - 74:70
****\ data binding error ****
答案 0 :(得分:4)
&#34;有办法吗?
数据绑定框架未创建MovieViewModel
的实例。因此,当你创建MovieViewModel
的实例时,构造函数参数就是你的工作。
我尝试并收到了错误
您的错误不是来自您问题中的代码。该错误指的是releaseDateFormated()
。