首页 > 解决方案 > 如何从其实现类中获取接口?

问题描述

在我的 Android 应用程序中,我有一个控制器DataManager,我在其中执行一些数据传输工作,并且我定义了(除其他外)一个界面ProgressbarCallback来显示另一个依赖片段的进度:

public class DataManager {

    ProgressbarCallback progressbarCallback;

    public interface ProgressbarCallback {
        void updateProgress(int progress);
    }

    //2
    ProgressShowerFragment f = ProgressShowerFragment.getInstance();
    progressCallback = f.getCallback();

    //3
    progressCallback.updateProgress(i)
}

在那里我想控制一个依赖片段的进度条。所以我必须ProgressShowerFragment展示我的进步:

public class ProgressShowerFragment extends Fragment implements DataManager.ProgressbarCallback {

    @Override
    public void updateProgress(int progress) {
        progresBar.setProgress(progress);
    }

    //1
    public ProgressbarCallback getCallback(){
        return this;
    } 
}

为了在我的参考中获得参考,我DataManager做了一个 getter(参见 1)返回回调的内容。实例化时ProgressShowerFragment,我也得到了回调(见 2)。

稍后在使用时,我会像 3 一样更新进度。

对我来说,这看起来很丑陋。什么是获取回调的优雅方式?

标签: androidandroid-fragmentsandroid-activityinterfacecallback

解决方案


您可以将 f 转换为 ProgressbarCallback

((ProgressbarCallback) f).updateProgress(i)

推荐阅读