您可以从自定义类(非活动/片段)访问viewmodel吗

wpcxdonn  于 2021-09-29  发布在  Java
关注(0)|答案(0)|浏览(222)

我正在创建一个侦听器类,不同活动/片段中的两个自定义按钮示例正在使用该类。此类具有侦听器方法,这些方法将更新该活动/片段的相应viewmodel。
如何在非活动/片段类中定义viewmodel?文件上说要实现 ViewModelStoreOwner ,但我真的不确定应该如何以及应该实施什么。我假设如果我没有正确实现它,我会有某种内存泄漏。。。

public class Listeners implements View.OnClickListener, ViewModelStoreOwner {

  @NonNull
  @org.jetbrains.annotations.NotNull
  @Override
  public ViewModelStore getViewModelStore() {
    return // what do I do here, and how do I tell it to close the scope appropriately
    // when the context is destroyed?
  }

  // Implement OnClick...
}

我只是想在这里抽象太多?android真的只是围绕着活动和片段而运转,因此需要我拥有令人烦恼的长文件吗?上面的类是我试图减少两个活动/片段之间的按钮侦听器的冗余实现
编辑:只传递此侦听器示例最终将驻留的活动的存储所有者是错误的吗?例如:

// Custom class constructor
public Listeners(ViewModelStoreOwner storeOwner) {
  mModel = new ViewModelProvider(storeOwner).get(Model.class);
}
// Calling/parent activity/fragment/context
Listeners listeners = new Listeners(this);
mButton.setOnClickListener(listeners);

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题