android - 如何从其实现类中获取接口(interface)?

标签 android android-fragments android-activity interface callback

在我的 Android 应用程序中,我有一个 Controller DataManager,我在其中执行一些数据传输操作,并且我定义了(除其他外)接口(interface) 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)
}

我想控制依赖 fragment 的进度条。所以我有一个 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 中那样更新进度。

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

最佳答案

您可以将 f 转换为 ProgressbarCallback

((ProgressbarCallback) f).updateProgress(i)

关于android - 如何从其实现类中获取接口(interface)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54574846/

相关文章:

android - 错误类型3错误: Activity class {com. rnnpro1/com.rnnpro1.MainActivity}不存在

AndroidManifest.xml 没有正确的值

java - 使用 fragment 和 java.reflect 的 Android 导航

android - Android中的倒数计时器错误

android - fragment 在 Activity 结果调用后关闭

android - 如何在android中显示包含来自另一个 Activity 的用户名的欢迎消息?

java - 使用 SAXParser 从 XML 中检索 HTML 编码的文本

java - 如何停止android的asyncTask

android - 从 Fragment 获取 Activity 中的 Adapter

android - 具有 Intent.FLAG_ACTIVITY_NEW_TASK 的 Activity 已被销毁