【问题标题】:Android RoboBinding firePropertyChange() undefined errorAndroid RoboBinding firePropertyChange() 未定义错误
【发布时间】:2014-10-19 13:54:27
【问题描述】:

我目前正在开发 Android 数据绑定应用程序。

我正在使用 android "RoboBinding" 库来绑定 Model-View 和 View-Model。

我使用了来自here 的示例应用程序供参考。

这是我的PresentationModel.java 课程:

@org.robobinding.presentationmodel.PresentationModel
public class PresentationModel implements
    org.robobinding.property.ObservableBean {
private String name;

public String getHello() {
    return name + ": hello Android MVVM(Presentation Model)!";
}

public String getName() {
    return name;
}

public void setName(String name) {
    this.name = name;
}

public void sayHello() {
    firePropertyChange(name);

}

@Override
public void addPropertyChangeListener(String arg0,
        PropertyChangeListener arg1) {
    // TODO Auto-generated method stub

}

@Override
public void removePropertyChangeListener(String arg0,
        PropertyChangeListener arg1) {
    // TODO Auto-generated method stub

}

}

但它显示错误为:方法 firePropertyChange(String) 未定义为 PresentationModel PresentationModel.java 类型

使用以下 jar 文件的示例:

  1. robobinding-0.8.4-jar-with-dependencies.jar
  2. robobinding-0.8.4-SNAPSHOT-jar-with-dependencies
  3. robobinding-0.8.5-SNAPSHOT-jar-with-dependencies

这是错误的屏幕截图:

我们将不胜感激。

谢谢。

【问题讨论】:

    标签: android data-binding viewmodel model-view robobinding


    【解决方案1】:

    现在我可以运行应用程序了。

    解决方法如下:

    https://github.com/RoboBinding/AndroidMVVM/issues/1

    谢谢。

    【讨论】:

    • 那个解决方案不是很有帮助——合作者说他会修改代码以不需要 AspectJ。我不知道适用于哪个版本,但我只能假设它已升级到最新版本(v0.8.9 atm)。知道为什么我仍然有这个问题吗?
    【解决方案2】:

    如果你不想使用 AspectJ,你应该创建一个 PresentationModelChangeSupport 属性,并调用 firePropertyChange() 方法:

    @org.robobinding.annotation.PresentationModel
    public class PresentationModel implements HasPresentationModelChangeSupport {
    
        protected PresentationModelChangeSupport mChangeSupport;
        private String name;
    
        public PresentationModel()
        {
            mChangeSupport = new PresentationModelChangeSupport(this);
        }
    
        public String getHello() {
            return name + ": hello Android MVVM(Presentation Model)!";
        }
    
        public void sayHello() {
            mChangeSupport.firePropertyChange("hello");
        }
    
        @Override
        public PresentationModelChangeSupport getPresentationModelChangeSupport() {
            return mChangeSupport;
        }
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-04-15
      • 1970-01-01
      • 1970-01-01
      • 2019-04-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多