我正在尝试在更新整数值时触发事件,但失败了。这是我正在使用的代码:

声明自定义监听器

public class fieldactivity extends AppCompatActivity implements View.OnClickListener {
    OnModeUpdate modeupdate; //Create custom listener for mode update

    int mode = 1;


模式更新代码

 protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.fieldsignals);
        Button button = (Button) findViewById(R.id.mode_rotate_button);
        button.setOnClickListener(this);
    }

 @Override
    public void onClick(View v) {
        switch (v.getId()) {
            case(R.id.rotate_button):
                mode += 1;
                modeupdate.onEvent(); //Fire Custom Lisentener - Fails On This Line
        }

    }


接口代码

public interface OnModeUpdate {
//BreakPoint here, but is never reached
        void onEvent();
    }

    public void setModeupdate(OnModeUpdate eventListener) {
        modeupdate = eventListener;
    }


我得到的错误是:


  java.lang.NullPointerException:尝试调用接口方法
  '无效
  alveare.com.plcsignalconverter.fieldactivity $ OnModeUpdate.onEvent()'
  在空对象引用上


我有什么想念的吗?

最佳答案

NullPointerException是由对空的Referenc对象(该对象尚未初始化)调用方法引起的。

在您的情况下,空对象是modeUpdate。尝试在活动的onCreate()中对其进行初始化。

modeupdate = new OnModeUpdate() {
    @Override
    public void onEvent() {
      /**
      * Write the code to handle the case
      */
    }
};

10-06 05:46