java - 如何访问同一对象的 getInstance 方法中内联实现的接口(interface)方法中的对象

标签 java android interface inner-classes

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

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

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

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

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

@行“dailog.dismiss();”它给我错误 Error:(182, 45) error: 变量 dailog 可能尚未初始化

最佳答案

编译器确实是对的:它不能保证 getInstance 在返回之前不会调用 onDeleteItem,在这种情况下,dailog 不会已初始化。 OnDelete 接口(interface)是你的,不是吗?修改它,使 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 的代码以传递创建 MyDailog 实例。

关于java - 如何访问同一对象的 getInstance 方法中内联实现的接口(interface)方法中的对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36356831/

相关文章:

java - 如何增加 tomcat 应用程序的 Java 堆空间

java - 根据关键 java 流将 HashMap 列表分组为 HashMap 列表

Android,处理程序消息传递

java - JodaTime 是否错误地解析了这个日期时间?

java - Android - 如何验证 url 并添加 http ://www

Android SlickAE(libgdx)没有发现类定义错误

interface - 具有接口(interface){}和类型断言的多个返回类型(在 Go 中)

Java 接口(interface)的对象实现

c# - 在 C# 中,是否可以像在 VB.NET 中那样使用具有不同名称的成员来实现接口(interface)成员?

java - Class Cast Exception,在 AsyncTask 的 Adapter 内部