Android 如何从接口的实现类中获取接口?

Android 如何从接口的实现类中获取接口?,android,android-fragments,android-activity,interface,callback,Android,Android Fragments,Android Activity,Interface,Callback,在我的Android应用程序中,我有一个控制器DataManager,在那里我做一些数据传输工作,我定义了一个接口ProgressbarCallback,以显示另一个依赖片段中的进度: public class DataManager { ProgressbarCallback progressbarCallback; public interface ProgressbarCallback { void updateProgress(int progress

在我的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)
}
在这里,我想控制一个片段的进度条。因此,我有一个
progressfrommaryfragment
来显示我的进度:

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)返回回调的操作。当实例化
progressFragment
时,我也会得到该回调(参见2)

在以后的使用中,我会更新进度,如图3所示


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

您可以将f转换为回调

((ProgressbarCallback) f).updateProgress(i)

您可以将f强制转换为ProgressbarCallback

((ProgressbarCallback) f).updateProgress(i)

不需要Getter。ProgressBurshFragment已经实现了回调,所以您只需
progressCallback=ProgressBurshFragment.getInstance()什么对你来说确实很难看?你可以将f转换为ProgressbarCallback
((ProgressbarCallback)f)。updateProgress(i)
@SergeyGlotov我在
数据管理器的internat方法中实例化并显示该片段。。但是我从几个地方调用的updateProgress,因此我必须使我的片段成为
DataManager
的成员变量。我试图避免使用成员变量。不需要使用更好的变量。ProgressBurshFragment已经实现了回调,所以您只需
progressCallback=ProgressBurshFragment.getInstance()什么对你来说确实很难看?你可以将f转换为ProgressbarCallback
((ProgressbarCallback)f)。updateProgress(i)
@SergeyGlotov我在
数据管理器的internat方法中实例化并显示该片段。。但是我从几个地方调用的updateProgress,因此我必须使我的片段成为
DataManager
的成员变量。我试图避免使用成员变量,但在没有强制转换的情况下,这也是令人担忧的。好的,我现在把ProgressBurshFragment作为一个成员变量。它也在没有强制转换的情况下运行。好的,我现在把ProgressBurshFragment作为一个成员变量。