在我的Android应用中,我有一个控制器DataManager,我在其中进行一些数据传输,并且已经定义(其中包括)一个接口ProgressbarCallback来显示另一个依赖Fragment的进度:

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中提供参考,我做了一个吸气剂(参见1),它返回了回调。实例化ProgressShowerFragment时,我还会收到该回调(请参见2)。

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

对我来说,这似乎很丑陋。取得回呼的一种优雅方法是什么?

最佳答案

您可以将f强制转换为ProgressbarCallback

((ProgressbarCallback) f).updateProgress(i)

07-26 09:39