工具栏和数据绑定

时间:2019-01-20 19:37:29

标签: android data-binding

我正在尝试第一次将“工具栏”与“数据绑定”一起使用,但可能没有在“数据绑定”中看到“工具栏”。我想将数据从editText传递到viewModel,但是viewmodel中的变量仍然为null。 怎么了?

activity_main:

<layout xmlns:android="http://schemas.android.com/apk/res/android">

<data>

    <variable
        name="mainViewModel"
        type="com.example.daniellachacz.weatherapp2.viewmodel.MainViewModel">
    </variable>

</data>

<RelativeLayout
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".view.MainActivity">

<androidx.appcompat.widget.Toolbar
    android:id="@+id/my_toolbar"
    android:layout_width="match_parent"
    android:layout_height="55dp"
    android:background="@color/design_default_color_primary_dark"
    android:theme="@style/Base.ThemeOverlay.AppCompat.ActionBar"
    app:popupTheme="@style/ThemeOverlay.AppCompat.Light"
    app:itemIconTint="@color/colorWhite">

    <EditText
        android:text="@={mainViewModel.city}"
        android:id="@+id/city_edit_text"
        android:layout_width="200dp"
        android:layout_height="40dp"
        android:textColor="@color/colorWhite"
        android:hint="Search location"
        android:textColorHint="@color/colorGrey"
        android:background="@android:color/transparent"/>
</androidx.appcompat.widget.Toolbar>

<FrameLayout
    android:id="@+id/fragment_container"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_above="@+id/bottom_navigation"
    android:layout_below="@+id/my_toolbar"
    android:layout_alignTop="@+id/my_toolbar"
    android:layout_marginTop="55dp">
</FrameLayout>

</RelativeLayout>

</layout>

活动:

 @Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    ActivityMainBinding activityMainBinding = DataBindingUtil.setContentView(this, R.layout.activity_main);
    final MainViewModel mainViewModel = ViewModelProviders.of(this).get(MainViewModel.class);
    activityMainBinding.setMainViewModel(mainViewModel);

    androidx.appcompat.widget.Toolbar myToolbar = findViewById(R.id.my_toolbar);
    setSupportActionBar(activityMainBinding.myToolbar);

}

1 个答案:

答案 0 :(得分:0)

您是否只是尝试 @ {mainViewModel.city}

=中删除@={mainViewModel.city}