android - 按钮中的 onClick 不起作用使用数据绑定(bind)

标签 android data-binding binding onclick

我开始学习Data Binding库 https://developer.android.com/topic/libraries/data-binding/index.html

我不明白为什么不这样做。

安卓{ .... 数据绑定(bind){ 启用 = 真 }

<data>
    <variable
        name="presenter"
        type="ua.com.it_st.ordersmanagers.activiteies.HistoryActivity"/>
</data>

<Button
    android:id="@+id/test"
    android:text="Start second activity"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:clickable="true"
    android:onClick="@{presenter::onHistoryClick}"
    />

public class HistoryActivity extends MvpAppCompatActivity implements HistoryView {

    @InjectPresenter
    HistoryPresenter historyPresenter;

    ActivityHistoryBinding binding;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
         binding = DataBindingUtil.setContentView(this, R.layout.activity_history);
    }

    public void onHistoryClick(View view) {
        Log.i("test ","test");
        binding.test.setText("test");
    }

最佳答案

您忘记将 ViewModel 设置为您的绑定(bind)。 如果您希望在您的 Activity 中收到 onClick,您必须这样做

binding.setPresenter(this)

尽管我建议在您的 XML 文件中调用 ViewModel viewModelactivity(现在称为 presenter)。 如果您希望您的 presenter 接收到 onClick,请将布局中的 ViewModel 类型从 Activity 更改为 Presenter,在您的 Presenter 中实现 onClick 方法, 并做

binding.setPresenter(presenter)

关于android - 按钮中的 onClick 不起作用使用数据绑定(bind),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45288432/

相关文章:

c# - Facebook v3 sdk monodroid 绑定(bind)

android - 网格未扩展以填满屏幕

使用 cordova 的 Android/ios 异步通知

java - android 错误 :Execution failed for task ':app:mergeDebugResources' . > java.lang.OutOfMemoryError: 无法创建新的 native 线程

wpf - 将 WPF 数据网格绑定(bind)到多个数据源

data-binding - D3 - 如何将相同的数据绑定(bind)到多个对象?

c# - 将验证规则应用于 ListView 的 ItemsSource 属性

java - Google maps api 没有将标记放置在合适的位置

c# - 根据 RadioButton 更改绑定(bind)

objective-c - 搜索字段谓词格式