我正在尝试学习数据绑定和MVVM模式,但我遇到了Exceptions的问题。
我的viewmodel有一个例外:
public void play(String move) throws Exception, ChessMoveException{
String[] positions = move.split("\\s+");
try {
Position position1 = new Position(positions[0]);
Position position2 = new Position(positions[1]);
this.model.turn(position1, position2);
if(this.model.getCurrentColor().equals(Color.WHITE)) {
this.model.setCurrentColor(Color.BLACK);
messageTurn.set(R.string.blackTurn);
} else {
this.model.setCurrentColor(Color.WHITE);
messageTurn.set(R.string.whiteTurn);
}
} catch (Exception ex) {
//TODO : Toast Exception
}
}
我在MainActivityEventHandlers中使用此方法:
public void onButtonPlayClicked(View v) throws Exception {
Log.i("MESSAGE", "Play");
try {
this.activity.binding.getViewModel().play(this.activity.binding.editTurn.getText().toString());
} catch (Exception ex) {
Log.i("EXCEPTION", "");
}
}
在我的activity_main.xml中,我使用了onClick适当性:android:onClick="@{eventHandlers.onButtonPlayClicked}"
但是当我尝试启动我的代码时,这是错误:
Error:(374, 43) error: unreported exception Exception; must be caught or declared to be thrown
当我点击它时,它会重定向我生成的ActivityMainBinding.java类,因此我无法编辑它以在onClick方法上添加我的异常:
public void onClick(android.view.View arg0) {
this.value.onButtonPlayClicked(arg0);
}
有什么办法可以解决此错误吗? 感谢
答案 0 :(得分:2)
你的方法
public void onButtonPlayClicked(View v) throws Exception {
Log.i("MESSAGE", "Play");
try {
this.activity.binding.getViewModel().play(this.activity.binding.editTurn.getText().toString());
} catch (Exception ex) {
Log.i("EXCEPTION", "");
}
}
声明它可能会抛出异常,但也会捕获所有异常。我想这在数据绑定插件生成绑定类时会以某种方式混淆。