Android 如何从接口的实现类中获取接口?
在我的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
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作为一个成员变量。