【问题标题】:How to access object in interface method implemented inline in getInstance method of same object如何在同一对象的getInstance方法中内联实现的接口方法中访问对象
【发布时间】:2016-04-01 12:50:25
【问题描述】:

我正在适配器中创建对话框片段对象,其中该对话框的 getInstance() 方法接受接口对象,该接口对象提供删除对象的方法。 在这种情况下,我想在删除对象后关闭对话框。但它显示 dailog 对象可能未初始化的错误。

例如我提供了适配器的 getVew() 方法的一部分:

final MyDailog dailog = MyDailog.getInstance((int ObjectValue, position, new MyDailog.OnDelete() {
        @Override
        public void onDeleteItem() {

                 objectList.get(position).setDeleted();
                 dailog.dismiss();                   
        });

这里的位置是适配器的getView方法中视图的索引

@ line "dailog.dismiss();"它给我的错误是 Error:(182, 45) error: variable dailog might not have been initialized

【问题讨论】:

    标签: java android interface inner-classes


    【解决方案1】:

    确实编译器是对的:它不能保证getInstance在返回之前不调用onDeleteItem,在这种情况下dailog不会被初始化。接口OnDelete 是你的,不是吗?修改它,使 onDeleteItem 将对话框作为参数。

    final MyDailog dailog = MyDailog.getInstance((int ObjectValue, position, new MyDailog.OnDelete() {
        @Override
        public void onDeleteItem(MyDailog md) {
    
                 objectList.get(position).setDeleted();
                 md.dismiss();                   
        });
    

    当然还有修改调用 onDeleteItem 的代码来传递 create MyDailog 实例。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-01-24
      • 1970-01-01
      • 2013-08-16
      相关资源
      最近更新 更多