如何在同一对象的getInstance方法中实现内联实现的接口方法中访问对象

时间:2016-04-01 12:50:25

标签: java android interface inner-classes

我在Adapter中创建Dialog Fragment Object,其中该对话框的getInstance()方法接受提供删除对象的方法的接口对象。 在这种情况下,我想删除对象删除后的对话框。但它显示dailog对象可能未初始化的错误。

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

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

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

此处position是适配器的getView方法中的视图索​​引

@ line“dailog.dismiss();”它给出了错误:错误:(182,45)错误:变量dailog可能尚未初始化

1 个答案:

答案 0 :(得分: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实例。